chiark / gitweb /
volume_id: fix linux_raid metadata version 1.0 detection
[elogind.git] / 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;