]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
md/raid5: Compare apples to apples (or sectors to sectors)
authorJes Sorensen <Jes.Sorensen@redhat.com>
Tue, 16 Feb 2016 21:44:24 +0000 (16:44 -0500)
committerChuck Anderson <chuck.anderson@oracle.com>
Thu, 26 May 2016 22:46:09 +0000 (15:46 -0700)
Orabug: 23331068

[ Upstream commit e7597e69dec59b65c5525db1626b9d34afdfa678 ]

'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")
Cc: stable@vger.kernel.org v3.7+
Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
(cherry picked from commit 5255a738ee6ecc0e479728efe5668efd64901197)

Signed-off-by: Dan Duval <dan.duval@oracle.com>
drivers/md/raid5.c

index 0d767e31f455d4ac2d7b4a2014b47f1a7a02bc0e..afa7fca3a21c41aaa1df9b4cbf4543ff0c506e34 100644 (file)
@@ -6942,8 +6942,8 @@ static int 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