]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
FIX: Cannot create volume
authorAdam Kwolek <adam.kwolek@intel.com>
Tue, 14 Jun 2011 02:42:06 +0000 (12:42 +1000)
committerNeilBrown <neilb@suse.de>
Tue, 14 Jun 2011 02:42:06 +0000 (12:42 +1000)
getinfo_super() can clear entire 'inf' structure before filling with new
information. Disk number required later is lost.

Restore disk number information after getinfo_super() call.

Signed-off-by: Adam Kwolek <adam.kwolek@intel.com>
Signed-off-by: NeilBrown <neilb@suse.de>
Create.c

index 7b4d0feceabe7e9c193d430b0aafb054910e86f6..48115db800a730a29968f1e1ae78e0c8bfd50e1c 100644 (file)
--- a/Create.c
+++ b/Create.c
@@ -856,11 +856,19 @@ int Create(struct supertype *st, char *mddev,
                                        /* getinfo_super might have lost these ... */
                                        inf->disk.major = major(stb.st_rdev);
                                        inf->disk.minor = minor(stb.st_rdev);
+                                       /* FIXME the following should not be needed
+                                        * as getinfo_super is suppose to set
+                                        * them.  However it doesn't for imsm,
+                                        * so we have this hack for now
+                                        */
+                                       if (st->ss == &super_imsm) {
+                                               inf->disk.number = dnum;
+                                               inf->disk.raid_disk = dnum;
+                                       }
                                }
                                break;
                        case 2:
                                inf->errors = 0;
-                               rv = 0;
 
                                rv = add_disk(mdfd, st, &info, inf);