mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 03:27:30 -04:00
md/raid5: always convert llbitmap bits for discard
llbitmap discard is useful even when no underlying member device supports it. The discard still converts the llbitmap range to unwritten, so later reads and recovery do not rely on stale parity for that range. Let llbitmap discard bypass the raid5 lower discard support check. If lower discard is not safe or not supported, complete the accounted clone after md_account_bio() so the llbitmap conversion callbacks run without member discard bios. Link: https://patch.msgid.link/20260605072639.2434847-4-yukuai@kernel.org Signed-off-by: Yu Kuai <yukuai@fygo.io>
This commit is contained in:
@@ -1138,6 +1138,9 @@ static bool raid5_discard_limits(struct mddev *mddev, struct bio *bi)
|
||||
{
|
||||
struct r5conf *conf = mddev->private;
|
||||
|
||||
if (mddev->bitmap_id == ID_LLBITMAP)
|
||||
return true;
|
||||
|
||||
if (!conf->raid5_discard_unsupported)
|
||||
return true;
|
||||
|
||||
@@ -5740,6 +5743,12 @@ static void make_discard_request(struct mddev *mddev, struct bio *bi)
|
||||
bi->bi_iter = bi_iter;
|
||||
bi->bi_next = NULL;
|
||||
|
||||
if (mddev->bitmap_id == ID_LLBITMAP &&
|
||||
conf->raid5_discard_unsupported) {
|
||||
bio_endio(bi);
|
||||
return;
|
||||
}
|
||||
|
||||
logical_sector = first_stripe * conf->chunk_sectors;
|
||||
last_sector = last_stripe * conf->chunk_sectors;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user