diff options
-rw-r--r-- | Assemble.c | 22 | ||||
-rw-r--r-- | tests/00raid1 | 1 | ||||
-rw-r--r-- | tests/00raid10 | 1 | ||||
-rw-r--r-- | tests/01r5fail | 1 | ||||
-rw-r--r-- | tests/02r1add | 1 | ||||
-rw-r--r-- | tests/02r1grow | 1 | ||||
-rw-r--r-- | tests/02r5grow | 1 | ||||
-rw-r--r-- | tests/02r6grow | 1 | ||||
-rw-r--r-- | tests/03r5assem | 1 | ||||
-rw-r--r-- | tests/04r0update | 1 | ||||
-rw-r--r-- | tests/05r1-bitmapfile | 1 | ||||
-rw-r--r-- | tests/05r1-grow-external | 1 | ||||
-rw-r--r-- | tests/05r1-internalbitmap | 1 | ||||
-rw-r--r-- | tests/05r1-n3-bitmapfile | 1 | ||||
-rw-r--r-- | tests/06r5swap | 1 | ||||
-rw-r--r-- | tests/06wrmostly | 1 |
16 files changed, 12 insertions, 25 deletions
@@ -101,6 +101,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, int uptodate; int state; int raid_disk; + int disk_nr; } *devices; int *best = NULL; /* indexed by raid_disk */ unsigned int bestcnt = 0; @@ -182,7 +183,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, if (ident->devices && !match_oneof(ident->devices, devname)) { - if (inargv || verbose > 0) + if ((inargv && verbose>=0) || verbose > 0) fprintf(stderr, Name ": %s is not one of %s\n", devname, ident->devices); continue; } @@ -194,7 +195,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, dfd = open(devname, O_RDONLY|O_EXCL, 0); if (dfd < 0) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": cannot open device %s: %s\n", devname, strerror(errno)); } else if (fstat(dfd, &stb)< 0) { @@ -207,10 +208,10 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, devname); close(dfd); } else if (!tst && (tst = guess_super(dfd)) == NULL) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": no recogniseable superblock\n"); } else if (tst->ss->load_super(tst,dfd, &super, NULL)) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf( stderr, Name ": no RAID superblock on %s\n", devname); close(dfd); @@ -221,35 +222,35 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, if (ident->uuid_set && (!super || same_uuid(info.uuid, ident->uuid, tst->ss->swapuuid)==0)) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": %s has wrong uuid.\n", devname); continue; } if (ident->name[0] && (!super || strncmp(ident2.name, ident->name, 32)!=0)) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": %s has wrong name.\n", devname); continue; } if (ident->super_minor != UnSet && (!super || ident->super_minor != info.array.md_minor)) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": %s has wrong super-minor.\n", devname); continue; } if (ident->level != UnSet && (!super|| ident->level != info.array.level)) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": %s has wrong raid level.\n", devname); continue; } if (ident->raid_disks != UnSet && (!super || ident->raid_disks!= info.array.raid_disks)) { - if (inargv || verbose > 0) + if ((inargv && verbose >= 0) || verbose > 0) fprintf(stderr, Name ": %s requires wrong number of drives.\n", devname); continue; @@ -305,6 +306,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, devices[devcnt].oldminor = info.disk.minor; devices[devcnt].events = info.events; devices[devcnt].raid_disk = info.disk.raid_disk; + devices[devcnt].disk_nr = info.disk.number; devices[devcnt].uptodate = 0; devices[devcnt].state = info.disk.state; if (most_recent < devcnt) { @@ -484,7 +486,7 @@ int Assemble(struct supertype *st, char *mddev, int mdfd, continue; if (!devices[j].uptodate) continue; - info.disk.number = i; + info.disk.number = devices[j].disk_nr; info.disk.raid_disk = i; info.disk.state = desired_state; diff --git a/tests/00raid1 b/tests/00raid1 index 01e4241..af40da4 100644 --- a/tests/00raid1 +++ b/tests/00raid1 @@ -2,7 +2,6 @@ # create a simple mirror # test version0, version1, and no super # test resync and recovery. -set -e mdadm -CR $md0 -l 1 -n2 $dev0 $dev1 check resync diff --git a/tests/00raid10 b/tests/00raid10 index fe781ba..6fffb74 100644 --- a/tests/00raid10 +++ b/tests/00raid10 @@ -1,4 +1,3 @@ -set -ex # Create some raid10 arrays, all with 6 devices and one spare devs="$dev0 $dev1 $dev2 $dev3 $dev4 $dev5 $dev6" diff --git a/tests/01r5fail b/tests/01r5fail index 5c76a0b..89cd561 100644 --- a/tests/01r5fail +++ b/tests/01r5fail @@ -1,5 +1,4 @@ -set -e # create a raid5, fail and remove a drive during initial sync # Add two more, fail and remove one diff --git a/tests/02r1add b/tests/02r1add index 6b2b212..c07ec97 100644 --- a/tests/02r1add +++ b/tests/02r1add @@ -1,5 +1,4 @@ -set -e # Make a raid1, add a device, then remove it again. mdadm -CR $md0 -l1 -n2 -x1 $dev0 $dev1 $dev2 diff --git a/tests/02r1grow b/tests/02r1grow index e789707..e187b0a 100644 --- a/tests/02r1grow +++ b/tests/02r1grow @@ -1,5 +1,4 @@ -set -e # create a small raid1 array, make it larger. Then make it smaller diff --git a/tests/02r5grow b/tests/02r5grow index b8de3d4..47bc83e 100644 --- a/tests/02r5grow +++ b/tests/02r5grow @@ -1,5 +1,4 @@ -set -e # create a small raid5 array, make it larger. Then make it smaller diff --git a/tests/02r6grow b/tests/02r6grow index 6f4cce2..897f510 100644 --- a/tests/02r6grow +++ b/tests/02r6grow @@ -1,5 +1,4 @@ -set -e # create a small raid6 array, make it larger. Then make it smaller diff --git a/tests/03r5assem b/tests/03r5assem index b2b0698..be26cf1 100644 --- a/tests/03r5assem +++ b/tests/03r5assem @@ -1,4 +1,3 @@ -set -e # create a raid5 array and assemble it in various ways, # including with missing devices. diff --git a/tests/04r0update b/tests/04r0update index 2a6939d..23c7d65 100644 --- a/tests/04r0update +++ b/tests/04r0update @@ -1,4 +1,3 @@ -set -e # create a raid0, re-assemble with a different super-minor mdadm -CR $md0 -l0 -n3 $dev0 $dev1 $dev2 diff --git a/tests/05r1-bitmapfile b/tests/05r1-bitmapfile index ac952c2..d227576 100644 --- a/tests/05r1-bitmapfile +++ b/tests/05r1-bitmapfile @@ -1,4 +1,3 @@ -set -e # # create a raid1 with a bitmap file diff --git a/tests/05r1-grow-external b/tests/05r1-grow-external index 072dc3c..ba9b3e5 100644 --- a/tests/05r1-grow-external +++ b/tests/05r1-grow-external @@ -1,4 +1,3 @@ -set -e # # create a raid1 array, add an external bitmap diff --git a/tests/05r1-internalbitmap b/tests/05r1-internalbitmap index 0f8a43a..19549c5 100644 --- a/tests/05r1-internalbitmap +++ b/tests/05r1-internalbitmap @@ -1,4 +1,3 @@ -set -e # # create a raid1 with an internal bitmap diff --git a/tests/05r1-n3-bitmapfile b/tests/05r1-n3-bitmapfile index ec72dec..a76a919 100644 --- a/tests/05r1-n3-bitmapfile +++ b/tests/05r1-n3-bitmapfile @@ -1,4 +1,3 @@ -set -e # # create a raid1 with 3 devices and a bitmap file diff --git a/tests/06r5swap b/tests/06r5swap index e3aaa64..41e8be6 100644 --- a/tests/06r5swap +++ b/tests/06r5swap @@ -1,4 +1,3 @@ -set -e # make a raid5 array, byte swap the superblocks, then assemble... diff --git a/tests/06wrmostly b/tests/06wrmostly index 929610c..34be60d 100644 --- a/tests/06wrmostly +++ b/tests/06wrmostly @@ -1,4 +1,3 @@ -set -e # create a raid1 array with a wrmostly device |