From: Kent Overstreet Date: Wed, 22 Feb 2023 23:35:51 +0000 (-0500) Subject: bcachefs: Fix erasure coding shutdown path X-Git-Tag: io_uring-6.7-2023-11-10~119^2~480 X-Git-Url: https://git.kernel.dk/?a=commitdiff_plain;h=e3877382fb9d0a8ae43c7e012742622bbd6e6d17;p=linux-block.git bcachefs: Fix erasure coding shutdown path It's possible when shutting down to for a stripe head to have a new stripe that doesn't yet have any blocks allocated - we just need to free it. Signed-off-by: Kent Overstreet --- diff --git a/fs/bcachefs/ec.c b/fs/bcachefs/ec.c index 4b054f7c4d4e..123ca0b0b43f 100644 --- a/fs/bcachefs/ec.c +++ b/fs/bcachefs/ec.c @@ -1764,6 +1764,7 @@ void bch2_new_stripes_to_text(struct printbuf *out, struct bch_fs *c) void bch2_fs_ec_exit(struct bch_fs *c) { struct ec_stripe_head *h; + unsigned i; while (1) { mutex_lock(&c->ec_stripe_head_lock); @@ -1775,7 +1776,12 @@ void bch2_fs_ec_exit(struct bch_fs *c) if (!h) break; - BUG_ON(h->s); + if (h->s) { + for (i = 0; i < h->s->new_stripe.key.v.nr_blocks; i++) + BUG_ON(h->s->blocks[i]); + + kfree(h->s); + } kfree(h); }