linux-raid.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] md: fix sync_completed reporting for very large drives (>2TB)
@ 2011-01-04 15:44 Rémi Rérolle
  2011-01-11 10:37 ` Rémi Rérolle
  0 siblings, 1 reply; 3+ messages in thread
From: Rémi Rérolle @ 2011-01-04 15:44 UTC (permalink / raw)
  To: linux-raid; +Cc: Rémi Rérolle

From: Rémi Rérolle <rrerolle@lacie.com>

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>
---
 drivers/md/md.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/md/md.c b/drivers/md/md.c
index 175c424..ea46b3b 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -3912,7 +3912,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");
@@ -3923,7 +3923,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);
-- 
1.7.1

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] md: fix sync_completed reporting for very large drives (>2TB)
  2011-01-04 15:44 [PATCH] md: fix sync_completed reporting for very large drives (>2TB) Rémi Rérolle
@ 2011-01-11 10:37 ` Rémi Rérolle
  2011-01-11 11:01   ` NeilBrown
  0 siblings, 1 reply; 3+ messages in thread
From: Rémi Rérolle @ 2011-01-11 10:37 UTC (permalink / raw)
  To: Rémi Rérolle; +Cc: linux-raid, neilb

Le 04/01/2011 16:44, Rémi Rérolle a écrit :
> From: Rémi Rérolle<rrerolle@lacie.com>
>
> 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.
>

Hi Neil,

What is the status for this patch ?

Thanks in advance!

> Signed-off-by: Rémi Rérolle<rrerolle@lacie.com>
> ---
>   drivers/md/md.c |    4 ++--
>   1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/md/md.c b/drivers/md/md.c
> index 175c424..ea46b3b 100644
> --- a/drivers/md/md.c
> +++ b/drivers/md/md.c
> @@ -3912,7 +3912,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");
> @@ -3923,7 +3923,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);

-- 
Rémi
--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] md: fix sync_completed reporting for very large drives (>2TB)
  2011-01-11 10:37 ` Rémi Rérolle
@ 2011-01-11 11:01   ` NeilBrown
  0 siblings, 0 replies; 3+ messages in thread
From: NeilBrown @ 2011-01-11 11:01 UTC (permalink / raw)
  To: Rémi Rérolle; +Cc: Rémi Rérolle, linux-raid

On Tue, 11 Jan 2011 11:37:54 +0100 Rémi Rérolle <rrerolle@lacie.com> wrote:

> Le 04/01/2011 16:44, Rémi Rérolle a écrit :
> > From: Rémi Rérolle<rrerolle@lacie.com>
> >
> > 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.
> >
> 
> Hi Neil,
> 
> What is the status for this patch ?
> 
> Thanks in advance!

Perfect timing!!

The status is that I had completely forgotten about it, but I have just been
assembling some md patches for the current merge window, so I have just added
your patch - it should appear in -next in a day or so and go to Linus by the
end of the week.

Thanks!

NeilBrown


> 
> > Signed-off-by: Rémi Rérolle<rrerolle@lacie.com>
> > ---
> >   drivers/md/md.c |    4 ++--
> >   1 files changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/md/md.c b/drivers/md/md.c
> > index 175c424..ea46b3b 100644
> > --- a/drivers/md/md.c
> > +++ b/drivers/md/md.c
> > @@ -3912,7 +3912,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");
> > @@ -3923,7 +3923,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);
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-raid" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2011-01-11 11:01 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-04 15:44 [PATCH] md: fix sync_completed reporting for very large drives (>2TB) Rémi Rérolle
2011-01-11 10:37 ` Rémi Rérolle
2011-01-11 11:01   ` NeilBrown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).