diff options
author | Karel Zak | 2012-11-14 13:14:29 +0100 |
---|---|---|
committer | Karel Zak | 2012-11-14 13:37:34 +0100 |
commit | 1f8590b56b8a461014acb3b7d041c1af3f658613 (patch) | |
tree | f803323ae8c8d56fea48fecd1e6782a3a1a6201a /libblkid/src/verify.c | |
parent | fdisk: gpt: check header size (diff) | |
download | kernel-qcow2-util-linux-1f8590b56b8a461014acb3b7d041c1af3f658613.tar.gz kernel-qcow2-util-linux-1f8590b56b8a461014acb3b7d041c1af3f658613.tar.xz kernel-qcow2-util-linux-1f8590b56b8a461014acb3b7d041c1af3f658613.zip |
libblkid: remove obsolete tags from cache
The libblkid cache tags are not removed if a new version of the
tags is empty (e.g. label 'foo' -> '').
# mkfs.ext4 -L test_label /dev/sda15
# blkid /dev/sda15
/dev/sda15: LABEL="test_label"
# tune2fs -L '' /dev/sda15
# blkid /dev/sda15
/dev/sda15: LABEL="test_label"
^^^^^^^^^^
Reported-by: Mike Fleetwood <mike.fleetwood@googlemail.com>
Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'libblkid/src/verify.c')
-rw-r--r-- | libblkid/src/verify.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/libblkid/src/verify.c b/libblkid/src/verify.c index cfb989bcc..207152cd8 100644 --- a/libblkid/src/verify.c +++ b/libblkid/src/verify.c @@ -43,6 +43,26 @@ static void blkid_probe_to_tags(blkid_probe pr, blkid_dev dev) blkid_set_tag(dev, name, data, len); } } + + /* + * remove obsolete tags + */ + if (!nvals || !blkid_probe_has_value(pr, "LABEL")) + blkid_set_tag(dev, "LABEL", NULL, 0); + if (!nvals || !blkid_probe_has_value(pr, "UUID")) + blkid_set_tag(dev, "UUID", NULL, 0); + if (!nvals || !blkid_probe_has_value(pr, "PART_ENTRY_UUID")) + blkid_set_tag(dev, "PARTUUID", NULL, 0); + if (!nvals || !blkid_probe_has_value(pr, "PART_ENTRY_NAME")) + blkid_set_tag(dev, "PARTLABEL", NULL, 0); + if (!nvals || !blkid_probe_has_value(pr, "TYPE")) + blkid_set_tag(dev, "TYPE", NULL, 0); + if (!nvals || !blkid_probe_has_value(pr, "SEC_TYPE")) + blkid_set_tag(dev, "SEC_TYPE", NULL, 0); + if (!nvals || !blkid_probe_has_value(pr, "EXT_JOURNAL")) /* extN */ + blkid_set_tag(dev, "EXT_JOURNAL", NULL, 0); + if (!nvals || !blkid_probe_has_value(pr, "MOUNT")) /* ocfs */ + blkid_set_tag(dev, "MOUNT", NULL, 0); } /* |