chiark / gitweb /
volume_id: fix linux_raid metadata version 1.0 detection
authorKay Sievers <kay.sievers@vrfy.org>
Wed, 29 Aug 2007 04:06:00 +0000 (06:06 +0200)
committerKay Sievers <kay.sievers@vrfy.org>
Wed, 29 Aug 2007 04:06:00 +0000 (06:06 +0200)
Fixes:
  https://bugs.launchpad.net/ubuntu/+source/udev/+bug/133773

extras/volume_id/lib/linux_raid.c

index 6d1d19cb740916552cea3cb6ff25484a51c10bd1..ff2c47c4732f0a4f39f6c3a6cbff84c09d2187c1 100644 (file)
@@ -142,13 +142,15 @@ static int volume_id_probe_linux_raid1(struct volume_id *id, uint64_t off, uint6
 
 int volume_id_probe_linux_raid(struct volume_id *id, uint64_t off, uint64_t size)
 {
-       uint64_t sboff = (size & ~(MD_RESERVED_BYTES - 1)) - MD_RESERVED_BYTES;
+       uint64_t sboff;
 
        /* version 0 at the end of the device */
+       sboff = (size & ~(MD_RESERVED_BYTES - 1)) - MD_RESERVED_BYTES;
        if (volume_id_probe_linux_raid0(id, off + sboff, size) == 0)
                return 0;
 
        /* version 1.0 at the end of the device */
+       sboff = (size & ~(0x1000 - 1)) - 0x2000;
        if (volume_id_probe_linux_raid1(id, off + sboff, size) == 0)
                return 0;