summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Rérolle <rrerolle@lacie.com>2011-01-13 23:14:34 +0100
committerNeilBrown <neilb@suse.de>2011-01-13 23:14:34 +0100
commit13ae864bc86ff65547ffe7e966b6433a0d0edb8a (patch)
tree6e5ca3a6736b75fa0db8415c1e3a2506af6ab9cc
parentmd: allow suspend_lo and suspend_hi to decrease as well as increase. (diff)
downloadlinux-13ae864bc86ff65547ffe7e966b6433a0d0edb8a.tar.xz
linux-13ae864bc86ff65547ffe7e966b6433a0d0edb8a.zip
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 <rrerolle@lacie.com> Signed-off-by: NeilBrown <neilb@suse.de>
-rw-r--r--drivers/md/md.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index dd64ad30a0fe..5e3714fecee9 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);