diff options
author | Gabriel de Perthuis <g2p.code@gmail.com> | 2014-12-13 01:56:56 +0100 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2014-12-14 12:54:17 -0500 |
commit | d47f6ca5f9b7a0b400d8bdb050151a0284fb4bdb (patch) | |
tree | e2a5711035b314ebc27411901cc3d89ff0a6349b /src/udev/udev-builtin-blkid.c | |
parent | 9b6e0ce5acff34a87314f3eb9f72532486840edf (diff) |
blkid: Warn when rejecting a superblock with a bad csum
Bump libblkid requirement from 2.20 to 2.24.
util-linux 2.25 is actually required since fdbbad981cc5da8bb4ed7e9b6646e7a114745ec5
Diffstat (limited to 'src/udev/udev-builtin-blkid.c')
-rw-r--r-- | src/udev/udev-builtin-blkid.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 810f27d1d0..83bd8c40fb 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -221,6 +221,7 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t blkid_probe pr; const char *data; const char *name; + const char *prtype = NULL; int nvals; int i; int err = 0; @@ -256,7 +257,8 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t blkid_probe_set_superblocks_flags(pr, BLKID_SUBLKS_LABEL | BLKID_SUBLKS_UUID | BLKID_SUBLKS_TYPE | BLKID_SUBLKS_SECTYPE | - BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION); + BLKID_SUBLKS_USAGE | BLKID_SUBLKS_VERSION | + BLKID_SUBLKS_BADCSUM); if (noraid) blkid_probe_filter_superblocks_usage(pr, BLKID_FLTR_NOTIN, BLKID_USAGE_RAID); @@ -278,6 +280,15 @@ static int builtin_blkid(struct udev_device *dev, int argc, char *argv[], bool t err = probe_superblocks(pr); if (err < 0) goto out; + if (blkid_probe_has_value(pr, "SBBADCSUM")) { + if (!blkid_probe_lookup_value(pr, "TYPE", &prtype, NULL)) + log_warning("incorrect %s checksum on %s", + prtype, udev_device_get_devnode(dev)); + else + log_warning("incorrect checksum on %s", + udev_device_get_devnode(dev)); + goto out; + } /* If we are a partition then our parent passed on the root * partition UUID to us */ |