From: Rémi Rérolle Date: Thu, 13 Jan 2011 22:14:34 +0000 (+1100) Subject: md: fix sync_completed reporting for very large drives (>2TB) X-Git-Tag: v2.6.38-rc1~222^2~3 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=13ae864bc86ff65547ffe7e966b6433a0d0edb8a;p=~shefty%2Frdma-dev.git md: fix sync_completed reporting for very large drives (>2TB) The values exported in the sync_completed file are unsigned long, which overflows with very large drives, resulting in wrong values reported. Since sync_completed uses sectors as unit, we'll start getting wrong values with components larger than 2TB. This patch simply replaces the use of unsigned long by unsigned long long. Signed-off-by: Rémi Rérolle Signed-off-by: NeilBrown --- diff --git a/drivers/md/md.c b/drivers/md/md.c index dd64ad30a0f..5e3714fecee 100644 --- a/drivers/md/md.c +++ b/drivers/md/md.c @@ -3918,7 +3918,7 @@ static struct md_sysfs_entry md_sync_speed = __ATTR_RO(sync_speed); static ssize_t sync_completed_show(mddev_t *mddev, char *page) { - unsigned long max_sectors, resync; + unsigned long long max_sectors, resync; if (!test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) return sprintf(page, "none\n"); @@ -3929,7 +3929,7 @@ sync_completed_show(mddev_t *mddev, char *page) max_sectors = mddev->dev_sectors; resync = mddev->curr_resync_completed; - return sprintf(page, "%lu / %lu\n", resync, max_sectors); + return sprintf(page, "%llu / %llu\n", resync, max_sectors); } static struct md_sysfs_entry md_sync_completed = __ATTR_RO(sync_completed);