56 lines
1.7 KiB
Diff
56 lines
1.7 KiB
Diff
From aa492d53186526b0879bdcd62079c555d611e7a0 Mon Sep 17 00:00:00 2001
|
|
From: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Date: Wed, 27 Nov 2024 01:03:41 -0500
|
|
Subject: [PATCH 130/233] bcachefs: Ignore empty btree root journal entries
|
|
Content-Type: text/plain; charset="utf-8"
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
There's no reason to treat them as errors: just ignore them, and go with
|
|
a previous btree root if we had one.
|
|
|
|
Reported-by: syzbot+e22007d6acb9c87c2362@syzkaller.appspotmail.com
|
|
Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
|
|
Signed-off-by: Alexander Miroshnichenko <alex@millerson.name>
|
|
---
|
|
fs/bcachefs/recovery.c | 16 +++++++---------
|
|
1 file changed, 7 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/fs/bcachefs/recovery.c b/fs/bcachefs/recovery.c
|
|
index 547c78a323f7..727e894762f5 100644
|
|
--- a/fs/bcachefs/recovery.c
|
|
+++ b/fs/bcachefs/recovery.c
|
|
@@ -442,7 +442,9 @@ static int journal_replay_entry_early(struct bch_fs *c,
|
|
|
|
switch (entry->type) {
|
|
case BCH_JSET_ENTRY_btree_root: {
|
|
- struct btree_root *r;
|
|
+
|
|
+ if (unlikely(!entry->u64s))
|
|
+ return 0;
|
|
|
|
if (fsck_err_on(entry->btree_id >= BTREE_ID_NR_MAX,
|
|
c, invalid_btree_id,
|
|
@@ -456,15 +458,11 @@ static int journal_replay_entry_early(struct bch_fs *c,
|
|
return ret;
|
|
}
|
|
|
|
- r = bch2_btree_id_root(c, entry->btree_id);
|
|
+ struct btree_root *r = bch2_btree_id_root(c, entry->btree_id);
|
|
|
|
- if (entry->u64s) {
|
|
- r->level = entry->level;
|
|
- bkey_copy(&r->key, (struct bkey_i *) entry->start);
|
|
- r->error = 0;
|
|
- } else {
|
|
- r->error = -BCH_ERR_btree_node_read_error;
|
|
- }
|
|
+ r->level = entry->level;
|
|
+ bkey_copy(&r->key, (struct bkey_i *) entry->start);
|
|
+ r->error = 0;
|
|
r->alive = true;
|
|
break;
|
|
}
|
|
--
|
|
2.45.2
|
|
|