diff mbox series

Revert "dm raid: remove unnecessary discard limits for raid10"

Message ID 20201209215814.2623617-1-songliubraving@fb.com (mailing list archive)
State Accepted, archived
Delegated to: Mike Snitzer
Headers show
Series Revert "dm raid: remove unnecessary discard limits for raid10" | expand

Commit Message

Song Liu Dec. 9, 2020, 9:58 p.m. UTC
This reverts commit f0e90b6c663a7e3b4736cb318c6c7c589f152c28.

Matthew Ruffell reported data corruption in raid10 due to the changes
in discard handling [1]. Revert these changes before we find a proper fix.

[1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1907262/
Cc: Matthew Ruffell <matthew.ruffell@canonical.com>
Cc: Xiao Ni <xni@redhat.com>
Cc: Mike Snitzer <snitzer@redhat.com>
Signed-off-by: Song Liu <songliubraving@fb.com>
---
 drivers/md/dm-raid.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Comments

Song Liu Dec. 9, 2020, 11:14 p.m. UTC | #1
> On Dec 9, 2020, at 2:36 PM, Mike Snitzer <snitzer@redhat.com> wrote:
> 
> On Wed, Dec 09 2020 at  4:58pm -0500,
> Song Liu <songliubraving@fb.com> wrote:
> 
>> This reverts commit f0e90b6c663a7e3b4736cb318c6c7c589f152c28.
>> 
>> Matthew Ruffell reported data corruption in raid10 due to the changes
>> in discard handling [1]. Revert these changes before we find a proper fix.
>> 
>> [1] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1907262/ 
>> Cc: Matthew Ruffell <matthew.ruffell@canonical.com>
>> Cc: Xiao Ni <xni@redhat.com>
>> Cc: Mike Snitzer <snitzer@redhat.com>
>> Signed-off-by: Song Liu <songliubraving@fb.com>
> 
> If you're reverting all the MD code that enabled this DM change, then
> obviously the DM change must be reverted too.  But please do _not_
> separate the DM revert from the MD reverts.

Good point! I should have thought about it through. 

Thanks,
Song

[...]



--
dm-devel mailing list
dm-devel@redhat.com
https://www.redhat.com/mailman/listinfo/dm-devel
diff mbox series

Patch

diff --git a/drivers/md/dm-raid.c b/drivers/md/dm-raid.c
index 9c1f7c4de65b3..dc8568ab96f24 100644
--- a/drivers/md/dm-raid.c
+++ b/drivers/md/dm-raid.c
@@ -3728,6 +3728,17 @@  static void raid_io_hints(struct dm_target *ti, struct queue_limits *limits)
 
 	blk_limits_io_min(limits, chunk_size_bytes);
 	blk_limits_io_opt(limits, chunk_size_bytes * mddev_data_stripes(rs));
+
+	/*
+	 * RAID10 personality requires bio splitting,
+	 * RAID0/1/4/5/6 don't and process large discard bios properly.
+	 */
+	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);
+	}
 }
 
 static void raid_postsuspend(struct dm_target *ti)