]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.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)
committerTim Gardner <tim.gardner@canonical.com>
Thu, 21 Apr 2016 12:53:16 +0000 (06:53 -0600)
BugLink: http://bugs.launchpad.net/bugs/1572722
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>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/md/raid5.c

index 704ef7fcfbf83239ff7ac119d37354576dea5221..c13921adec93ca2c4e8886754d6dff39bb059d07 100644 (file)
@@ -7015,8 +7015,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