Re: [PATCH] Assemble: print error message if mdadm fails assembling with --uuid option

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jes,

Could you consider to merge this one before release 4.2?

Thanks,
Guoqing

Subject: [PATCH] Assemble: print error message if mdadm fails
assembling with --uuid option
To: <linux-raid@xxxxxxxxxxxxxxx>
Cc: <neilb@xxxxxxxx>, <jsorensen@xxxxxx>,
<jinpu.wang@xxxxxxxxxxxxxxx>, Gioh Kim <gi-oh.kim@xxxxxxxxxxxxxxx>


When mdadm tries to assemble one working device and one zeroed-out device,
it failed but print successful message because there is --uuid option.

Following script always reproduce it.

dd if=/dev/zero of=/dev/ram0 oflag=direct
dd if=/dev/zero of=/dev/ram1 oflag=direct
./mdadm -C /dev/md111 -e 1.2 --uuid="12345678:12345678:12345678:12345678" \
     -l1 -n2 /dev/ram0 /dev/ram1
./mdadm -S /dev/md111
dd if=/dev/zero of=/dev/ram1 oflag=direct
./mdadm -A /dev/md111 --uuid="12345678:12345678:12345678:12345678" \
     /dev/ram0 /dev/ram1

Following is message from mdadm.

mdadm: No super block found on /dev/ram1 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/ram1
mdadm: /dev/md111 assembled from 1 drive - need all 2 to start it (use
--run to insist).

The mdadm say that it assembled but mdadm does not create /dev/md111.
The message is wrong.

After applying this patch, mdadm reports error correctly as following.

mdadm: No super block found on /dev/ram1 (Expected magic a92b4efc, got 00000000)
mdadm: no RAID superblock on /dev/ram1
mdadm: /dev/ram1 has no superblock - assembly aborted

Signed-off-by: Gioh Kim <gi-oh.kim@xxxxxxxxxxxxxxx>
---
  Assemble.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Assemble.c b/Assemble.c
index 420c7b3..c1542f9 100644
--- a/Assemble.c
+++ b/Assemble.c
@@ -269,7 +269,7 @@ static int select_devices(struct mddev_dev *devlist,
                         if (auto_assem || !inargv)
                                 /* Ignore unrecognised devices during
auto-assembly */
                                 goto loop;
-                       if (ident->uuid_set || ident->name[0] ||
+                       if (ident->name[0] ||
                             ident->super_minor != UnSet)
                                 /* Ignore unrecognised device if looking for
                                  * specific array */
--
2.19.1




[Index of Archives]     [Linux RAID Wiki]     [ATA RAID]     [Linux SCSI Target Infrastructure]     [Linux Block]     [Linux IDE]     [Linux SCSI]     [Linux Hams]     [Device Mapper]     [Device Mapper Cryptographics]     [Kernel]     [Linux Admin]     [Linux Net]     [GFS]     [RPM]     [git]     [Yosemite Forum]


  Powered by Linux