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