]> err.no Git - util-linux/commit
blkid: remove whole-disk entries from cache when partitions are found
authorEric Sandeen <sandeen@redhat.com>
Fri, 24 Apr 2009 19:08:45 +0000 (21:08 +0200)
committerKarel Zak <kzak@redhat.com>
Fri, 24 Apr 2009 19:08:45 +0000 (21:08 +0200)
commit0295be0377d478c709d5176d93196367a5dac638
tree15f928fa63e85765fc3581dc284b02cbfe0f2eaa
parentee5190416921537b9747bdbdad496b11d737bd81
blkid: remove whole-disk entries from cache when partitions are found

We can get into a situation in blkid where whole disks remain
in the cache, even though partitions are found.  For labels
such as sun disklabels which may have the first partition
beginning at sector 0, this is even somewhat likely.

1) create a sun disklabel w/partitions
2) mkfs the first partition (at sector 0)
3) remove the partition table
4) run blkid - this finds the fs on the whole disk, places in cache
5) recreate the partition table
6) run blkid - this finds the partition, places in cache

And now we have both /dev/sda and /dev/sda1 in cache.

There are heuristics in probe_all to avoid putting the whole disk
in cache if it has partitions, but there is nothing to remove the
whole-disk entry in the above case.  I think the below patch
suffices, although I haven't quite convinced myself that setting
the lens[which]=0; is the right logic for that bit of state...

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
Signed-off-by: Karel Zak <kzak@redhat.com>
libs/blkid/src/devname.c