diff options
Diffstat (limited to 'libbcachefs/journal.c')
-rw-r--r-- | libbcachefs/journal.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/libbcachefs/journal.c b/libbcachefs/journal.c index 60c5c9b0..76a3b465 100644 --- a/libbcachefs/journal.c +++ b/libbcachefs/journal.c @@ -1077,20 +1077,26 @@ fsck_err: return ret; } -void bch2_journal_mark(struct bch_fs *c, struct list_head *list) +int bch2_journal_mark(struct bch_fs *c, struct list_head *list) { struct bkey_i *k, *n; struct jset_entry *j; struct journal_replay *r; + int ret; list_for_each_entry(r, list, list) for_each_jset_key(k, n, j, &r->j) { enum bkey_type type = bkey_type(j->level, j->btree_id); struct bkey_s_c k_s_c = bkey_i_to_s_c(k); - if (btree_type_has_ptrs(type)) - bch2_btree_mark_key_initial(c, type, k_s_c); + if (btree_type_has_ptrs(type)) { + ret = bch2_btree_mark_key_initial(c, type, k_s_c); + if (ret) + return ret; + } } + + return 0; } static bool journal_entry_is_open(struct journal *j) |