[PATCH] mdadm --detail was incorrect for shrinking reshapes

[PATCH] mdadm --detail was incorrect for shrinking reshapes

am 20.06.2011 18:06:55 von Andrew Burgess

Since info->delta_disks is signed it doesn't need to be special-cased.

This allowed my 9->8 reshape to display correctly instead of as 8->7

(the "This is pretty boring" context is apparently the universe's
opinion of my first patch!)


mdadm> git diff
diff --git a/Detail.c b/Detail.c
index 375189d..40806cf 100644
--- a/Detail.c
+++ b/Detail.c
@@ -430,12 +430,9 @@ This is pretty boring
printf(" Reshape pos'n : %llu%s\n", (unsigned
long long) info->reshape_progress<<9,
human_size((unsigned long
long)info->reshape_progress<<9));
#endif
- if (info->delta_disks > 0)
+ if (info->delta_disks != 0)
printf(" Delta Devices : %d,
(%d->%d)\n",
info->delta_disks,
array.raid_disks - info->delta_disks, array.raid_disks);
- if (info->delta_disks < 0)
- printf(" Delta Devices : %d,
(%d->%d)\n",
- info->delta_disks,
array.raid_disks, array.raid_disks + info->delta_disks);
if (info->new_level != array.level) {
char *c = map_num(pers,
info->new_level);
printf(" New Level : %s\n",
c?c:"-unknown-");
--
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

Re: [PATCH] mdadm --detail was incorrect for shrinking reshapes

am 23.06.2011 03:47:55 von NeilBrown

On Mon, 20 Jun 2011 09:06:55 -0700 Andrew Burgess wrote:

> Since info->delta_disks is signed it doesn't need to be special-cased.
>
> This allowed my 9->8 reshape to display correctly instead of as 8->7
>
> (the "This is pretty boring" context is apparently the universe's
> opinion of my first patch!)
>
>
> mdadm> git diff
> diff --git a/Detail.c b/Detail.c
> index 375189d..40806cf 100644
> --- a/Detail.c
> +++ b/Detail.c
> @@ -430,12 +430,9 @@ This is pretty boring
> printf(" Reshape pos'n : %llu%s\n", (unsigned
> long long) info->reshape_progress<<9,
> human_size((unsigned long
> long)info->reshape_progress<<9));
> #endif
> - if (info->delta_disks > 0)
> + if (info->delta_disks != 0)
> printf(" Delta Devices : %d,
> (%d->%d)\n",
> info->delta_disks,
> array.raid_disks - info->delta_disks, array.raid_disks);
> - if (info->delta_disks < 0)
> - printf(" Delta Devices : %d,
> (%d->%d)\n",
> - info->delta_disks,
> array.raid_disks, array.raid_disks + info->delta_disks);
> if (info->new_level != array.level) {
> char *c = map_num(pers,
> info->new_level);
> printf(" New Level : %s\n",
> c?c:"-unknown-");
> --
> 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


Thanks.

BTW "format=flowed" doesn't really work for patches.. Fortunately it was
small enough that I could just apply it by hand.

I had originally planned that "raid_disk" should always be the maximum of the
"before" and "after" number of devices in the array - so that it needed
exactly "raid_disks" devices to be non-degraded etc. It seems that didn't
really work out but I never fixed this code to reflect reality.

Thanks for the patch, it is applied now.

NeilBrown

--
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