summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJes Sorensen <Jes.Sorensen@redhat.com>2016-02-16 16:44:24 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-04-12 07:33:38 -0700
commite7ffd7dbb5bc025c6d63416b8acba2b162f29bcb (patch)
tree56f82b6cb96f8415fb1bfe5548e4b97fe62b1247
parent43bcbdfec07740e5aa9e3bc98b66e360b1b22751 (diff)
downloadlwn-e7ffd7dbb5bc025c6d63416b8acba2b162f29bcb.tar.gz
lwn-e7ffd7dbb5bc025c6d63416b8acba2b162f29bcb.zip
md/raid5: Compare apples to apples (or sectors to sectors)
commit e7597e69dec59b65c5525db1626b9d34afdfa678 upstream. 'max_discard_sectors' is in sectors, while 'stripe' is in bytes. This fixes the problem where DISCARD would get disabled on some larger RAID5 configurations (6 or more drives in my testing), while it worked as expected with smaller configurations. Fixes: 620125f2bf8 ("MD: raid5 trim support") Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com> Signed-off-by: Shaohua Li <shli@fb.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/md/raid5.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index b4f02c9959f2..7f770b0c0348 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -7014,8 +7014,8 @@ static int raid5_run(struct mddev *mddev)
}
if (discard_supported &&
- mddev->queue->limits.max_discard_sectors >= stripe &&
- mddev->queue->limits.discard_granularity >= stripe)
+ mddev->queue->limits.max_discard_sectors >= (stripe >> 9) &&
+ mddev->queue->limits.discard_granularity >= stripe)
queue_flag_set_unlocked(QUEUE_FLAG_DISCARD,
mddev->queue);
else