FAILED: patch "[PATCH] dm raid: fix discard limits for raid1 and raid10" failed to apply to 5.9-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 5.9-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From e0910c8e4f87bb9f767e61a778b0d9271c4dc512 Mon Sep 17 00:00:00 2001
From: Mike Snitzer <[email protected]>
Date: Thu, 24 Sep 2020 13:14:52 -0400
Subject: [PATCH] dm raid: fix discard limits for raid1 and raid10
Block core warned that discard_granularity was 0 for dm-raid with personality of raid1. Reason is that raid_io_hints() was incorrectly special-casing raid1 rather than raid0.
But since commit 29efc390b9462 ("md/md0: optimize raid0 discard handling") even raid0 properly handles large discards.
Fix raid_io_hints() by removing discard limits settings for raid1. Also, fix limits for raid10 by properly stacking underlying limits as done in blk_stack_limits().
Depends-on: 29efc390b9462 ("md/md0: optimize raid0 discard handling")
drivers/md/dm-raid.c +7 -5
@@ -3730,12 +3730,14 @@ static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits)blk_limits_io_opt (limits, chunk_size_bytes *mddev_data_stripes (rs));/* -* RAID1 and RAID10 personalities require bio splitting, -* RAID0/4/5/6 don't and process large discard bios properly. +* RAID10 personality requires bio splitting, +* RAID0/1/4/5/6 don't and process large discard bios properly. */ -if (rs_is_raid1 (rs) ||rs_is_raid10 (rs)) { - limits->discard_granularity = chunk_size_bytes; - limits->max_discard_sectors = rs->md.chunk_sectors; +if (rs_is_raid10 (rs)) { + limits->discard_granularity =max (chunk_size_bytes, + limits->discard_granularity); + limits->max_discard_sectors =min_not_zero (rs->md.chunk_sectors, + limits->max_discard_sectors); } }