diff options
-rw-r--r-- | fs/bcachefs/journal.c | 13 | ||||
-rw-r--r-- | fs/bcachefs/journal.h | 13 | ||||
-rw-r--r-- | fs/bcachefs/recovery.c | 29 |
3 files changed, 16 insertions, 39 deletions
diff --git a/fs/bcachefs/journal.c b/fs/bcachefs/journal.c index 2e84af8a044c..969612e612e0 100644 --- a/fs/bcachefs/journal.c +++ b/fs/bcachefs/journal.c @@ -55,19 +55,6 @@ static void bch2_journal_buf_init(struct journal *j) buf->data->u64s = 0; } -static inline bool journal_entry_empty(struct jset *j) -{ - struct jset_entry *i; - - if (j->seq != j->last_seq) - return false; - - vstruct_for_each(j, i) - if (i->type || i->u64s) - return false; - return true; -} - void bch2_journal_halt(struct journal *j) { union journal_res_state old, new; diff --git a/fs/bcachefs/journal.h b/fs/bcachefs/journal.h index 3447b4ad462d..36066ea7de7a 100644 --- a/fs/bcachefs/journal.h +++ b/fs/bcachefs/journal.h @@ -231,6 +231,19 @@ static inline void bch2_journal_add_keys(struct journal *j, struct journal_res * id, 0, k, k->k.u64s); } +static inline bool journal_entry_empty(struct jset *j) +{ + struct jset_entry *i; + + if (j->seq != j->last_seq) + return false; + + vstruct_for_each(j, i) + if (i->type == BCH_JSET_ENTRY_btree_keys && i->u64s) + return false; + return true; +} + void __bch2_journal_buf_put(struct journal *, bool); static inline void bch2_journal_buf_put(struct journal *j, unsigned idx, diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c index 9411a1f550f3..b1fcc105cffd 100644 --- a/fs/bcachefs/recovery.c +++ b/fs/bcachefs/recovery.c @@ -322,32 +322,9 @@ fsck_err: static bool journal_empty(struct list_head *journal) { - struct journal_replay *i; - struct jset_entry *entry; - - if (list_empty(journal)) - return true; - - i = list_last_entry(journal, struct journal_replay, list); - - if (i->j.last_seq != i->j.seq) - return false; - - list_for_each_entry(i, journal, list) { - vstruct_for_each(&i->j, entry) { - if (entry->type == BCH_JSET_ENTRY_btree_root || - entry->type == BCH_JSET_ENTRY_usage || - entry->type == BCH_JSET_ENTRY_data_usage) - continue; - - if (entry->type == BCH_JSET_ENTRY_btree_keys && - !entry->u64s) - continue; - return false; - } - } - - return true; + return list_empty(journal) || + journal_entry_empty(&list_last_entry(journal, + struct journal_replay, list)->j); } int bch2_fs_recovery(struct bch_fs *c) |