Hi!
On Sun, Sep 30, 2007 at 01:22:56PM +0100, martin f. krafft wrote:
> Commit a40b4fe introduced a temporary supertype variable tst, instead of
> manipulating st directly. However, it was forgotton to pass &tst into the
> recursive load_super1 call, causing an infinite recursion.
>
> Signed-off-by: martin f. krafft <[EMAIL PROTECTED]>
> ---
> super1.c | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/super1.c b/super1.c
> index 52783e7..06c2655 100644
> --- a/super1.c
> +++ b/super1.c
> @@ -1001,7 +1001,7 @@ static int load_super1(struct supertype *st, int fd,
> void **sbp, char *devname)
> /* guess... choose latest ctime */
> tst.ss = &super1;
> for (tst.minor_version = 0; tst.minor_version <= 2 ;
> tst.minor_version++) {
> - switch(load_super1(st, fd, sbp, devname)) {
> + switch(load_super1(&tst, fd, sbp, devname)) {
> case 0: super = *sbp;
> if (bestvers == -1 ||
> bestctime < __le64_to_cpu(super->ctime)) {
I have independently tried to understand why the installer was not able
to create RAID devices anymore. After digging the source code, I think
you have missing half of the fix:
--- mdadm-2.6.3+200709292116+4450e59.orig/super1.c
+++ mdadm-2.6.3+200709292116+4450e59/super1.c
@@ -1020,7 +1020,7 @@
tst.minor_version = bestvers;
tst.ss = &super1;
tst.max_devs = 384;
- rv = load_super1(st, fd, sbp, devname);
+ rv = load_super1(&tst, fd, sbp, devname);
if (rv == 0)
*st = tst;
return rv;
As far as I can read, it will loop indefinetely as well, in in this
second call without the former change.
Anyway, thanks for promptly figuring out this issue. :)
Cheers,
--
Jérémy Bobbio .''`.
[EMAIL PROTECTED] : :Ⓐ : # apt-get install anarchism
`. `'`
`-
signature.asc
Description: Digital signature

