From: Kent Overstreet Date: Fri, 23 May 2025 22:30:10 +0000 (-0400) Subject: bcachefs: Fix allocate -> self healing path X-Git-Tag: block-6.16-20250606~39^2~5 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=f351d91edd507391518a4f5870185fa5bf38446b;p=linux-block.git bcachefs: Fix allocate -> self healing path When we go to allocate and find taht a bucket in the freespace btree is actually allocated, we're supposed to return nonzero to tell the allocator to skip it. This fixes an emergency read only due to a bucket/ptr gen mismatch - we also don't return the correct bucket gen when this happens. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/alloc_background.c b/fs/bcachefs/alloc_background.c index a38b9c6c891e..173e81c2bbcb 100644 --- a/fs/bcachefs/alloc_background.c +++ b/fs/bcachefs/alloc_background.c @@ -1475,6 +1475,8 @@ delete: w->c = c; w->pos = BBPOS(iter->btree_id, iter->pos); queue_work(c->write_ref_wq, &w->work); + + ret = 1; /* don't allocate from this bucket */ goto out; } }