]> err.no Git - util-linux/commitdiff
libblkid: return first detected crypto device
authorScott James Remnant <scott@ubuntu.com>
Mon, 26 Oct 2009 12:49:17 +0000 (13:49 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 26 Oct 2009 12:49:17 +0000 (13:49 +0100)
Crypto devices may sometimes have multiple additional prober matches,
however just like RAID, there's no danger of activating the wrong one
since special help is needed to activate the block device before it
can be used.

Thus modify blkid_do_safeprobe() to break out of the loop when a
crypto device is detected, as it does already for RAID.

Signed-off-by: Scott James Remnant <scott@ubuntu.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
shlibs/blkid/src/superblocks/superblocks.c

index fe66d5af623ed0bb966f8f76480a4460ae792460..6fb2be3a705a18ab787c38f37fefc384d6216072 100644 (file)
@@ -93,6 +93,7 @@ static const struct blkid_idinfo *idinfos[] =
        &highpoint37x_idinfo,
        &adraid_idinfo,
        &jmraid_idinfo,
+
        &lvm2_idinfo,
        &lvm1_idinfo,
        &snapcow_idinfo,
@@ -388,9 +389,9 @@ static int superblocks_probe(blkid_probe pr, struct blkid_chain *chn)
  * (cannot be used in while()) and checks for ambivalen results (more
  * filesystems on the device) -- in such case returns -2.
  *
- * The function does not check for filesystems when a RAID signature is
- * detected.  The function also does not check for collision between RAIDs. The
- * first detected RAID is returned.
+ * The function does not check for filesystems when a RAID or crypto signature
+ * is detected.  The function also does not check for collision between RAIDs
+ * and crypto devices. The first detected RAID or crypto device is returned.
  */
 static int superblocks_safeprobe(blkid_probe pr, struct blkid_chain *chn)
 {
@@ -409,7 +410,7 @@ static int superblocks_safeprobe(blkid_probe pr, struct blkid_chain *chn)
                }
                count++;
 
-               if (idinfos[chn->idx]->usage & BLKID_USAGE_RAID)
+               if (idinfos[chn->idx]->usage & (BLKID_USAGE_RAID | BLKID_USAGE_CRYPTO))
                        break;
                if (!(idinfos[chn->idx]->flags & BLKID_IDINFO_TOLERANT))
                        intol++;