From 1f8590b56b8a461014acb3b7d041c1af3f658613 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Wed, 14 Nov 2012 13:14:29 +0100 Subject: 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 Signed-off-by: Karel Zak --- libblkid/src/verify.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'libblkid/src/verify.c') 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); } /* -- cgit v1.2.3-55-g7522