On Fri, Feb 21, 2025 at 04:11:00PM +0800, Zheng Qixing wrote: > From: Li Nan <linan122@xxxxxxxxxx> > > If ack and unack badblocks are adjacent, they will not be merged and will > remain as two separate badblocks. Even after the bad blocks are written > to disk and both become ack, they will still remain as two independent > bad blocks. This is not ideal as it wastes the limited space for > badblocks. Therefore, during ack_all_badblocks(), attempt to merge > badblocks if they are adjacent. > > Fixes: aa511ff8218b ("badblocks: switch to the improved badblock handling code") > Signed-off-by: Li Nan <linan122@xxxxxxxxxx> Looks good to me. Acked-by: Coly Li <colyli@xxxxxxxxxx> Thanks. > --- > block/badblocks.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/block/badblocks.c b/block/badblocks.c > index f069c93e986d..ad8652fbe1c8 100644 > --- a/block/badblocks.c > +++ b/block/badblocks.c > @@ -1491,6 +1491,11 @@ void ack_all_badblocks(struct badblocks *bb) > p[i] = BB_MAKE(start, len, 1); > } > } > + > + for (i = 0; i < bb->count ; i++) > + while (try_adjacent_combine(bb, i)) > + ; > + > bb->unacked_exist = 0; > } > write_sequnlock_irq(&bb->lock); > -- > 2.39.2 > -- Coly Li