Fix blkid library so that the cache validation notices ext2 to ext3 conversion

There's mistake in blkid ext2 detection code. The libblkid doesn't
check for journal when revalidate the cache information about an ext2
device.

        # rm -f /etc/blkid.tab

        # mkfs.ext2 /dev/loop0 &> /dev/null
        # blkid -s TYPE /dev/loop0
        /dev/loop0: TYPE="ext2"

        # mkfs.ext3 /dev/loop0 &> /dev/null
        # blkid -s TYPE /dev/loop0
        /dev/loop0: TYPE="ext2"

That bug doesn't appear when libblkid creates new cache and checks for
all possible filesystems, because it tries ext3 before ext2. BUT when
the library only revalidate the cache it first probes for old cached
filesystem (e.g. ext2).

Signed-off-by: Karel Zak <kzak@redhat.com>
Signed-off-by: "Theodore Ts'o" <tytso@mit.edu>
bitmap-optimize
Karel Zak 2005-09-06 06:26:45 -04:00 committed by Theodore Ts'o
parent 68a7f959c0
commit 05a6edf4fd
2 changed files with 11 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2005-09-05 Karel Zak <kzak@redhat.com>
* probe.c (probe_ext2): Check to see if a journal has been added
to an ext2 filesystem when revalidating cached information
about an ext2 device.
2005-07-25 Theodore Ts'o <tytso@mit.edu>
* cache.c (safe_getenv): Pass in zero to the unusued arguments of

View File

@ -136,6 +136,11 @@ static int probe_ext2(int fd __BLKID_ATTR((unused)),
if (blkid_le32(es->s_feature_incompat) &
EXT3_FEATURE_INCOMPAT_JOURNAL_DEV)
return -BLKID_ERR_PARAM;
/* Distinguish between ext3 and ext2 */
if ((blkid_le32(es->s_feature_compat) &
EXT3_FEATURE_COMPAT_HAS_JOURNAL))
return -BLKID_ERR_PARAM;
get_ext2_info(dev, buf);