On Thursday November 2, [EMAIL PROTECTED] wrote: > > Neil, can we apply the patch contributed to fix this: > > > http://bugs.debian.org/cgi-bin/bugreport.cgi/mdadm-fix-infinite-loop.diff?bug=396582;msg=5;att=1 > > or do I remember that you previously replaced devlist with NULL to > fix another bug?
Replacing the NULL with devlist will stopped stacked-device from being auto-assembled properly. This patch seems to fix the problem, and I am happy with it. Thanks for the report. NeilBrown ------------------------ Fixed problems that could cause infinitel loop with auto assemble. If an auto-assembly attempt failes because the array cannot be opened or because the array has already been created, then we get into an infinite loop. Reported-by: Dan Pascu <[EMAIL PROTECTED]> Fixes-debian-bug: 396582 ### Diffstat output ./Assemble.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff .prev/Assemble.c ./Assemble.c --- .prev/Assemble.c 2006-10-13 08:46:15.000000000 +1000 +++ ./Assemble.c 2006-11-06 12:48:20.000000000 +1100 @@ -185,6 +185,8 @@ int Assemble(struct supertype *st, char else if (mdfd >= 0) inargv = 1; + try_again: + tmpdev = devlist; num_devs = 0; while (tmpdev) { if (tmpdev->used) @@ -383,14 +385,28 @@ int Assemble(struct supertype *st, char else asprintf(&mddev, "/dev/md/%s", c); mdfd = open_mddev(mddev, ident->autof); - if (mdfd < 0) - return mdfd; + if (mdfd < 0) { + free(first_super); + free(devices); + first_super = NULL; + goto try_again; + } vers = md_get_version(mdfd); if (ioctl(mdfd, GET_ARRAY_INFO, &inf)==0) { + for (tmpdev = devlist ; + tmpdev && tmpdev->used != 1; + tmpdev = tmpdev->next) + ; fprintf(stderr, Name ": %s already active, cannot restart it!\n", mddev); + if (tmpdev) + fprintf(stderr, Name ": %s needed for %s...\n", + mddev, tmpdev->devname); close(mdfd); + mdfd = -1; free(first_super); - return 1; + free(devices); + first_super = NULL; + goto try_again; } must_close = 1; } -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]