]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
Fix blkid library so that the cache validation notices ext2 to ext3 conversion
authorKarel Zak <kzak@redhat.com>
Tue, 6 Sep 2005 10:26:45 +0000 (06:26 -0400)
committerTheodore Ts'o <tytso@mit.edu>
Tue, 6 Sep 2005 10:26:45 +0000 (06:26 -0400)
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>
lib/blkid/ChangeLog
lib/blkid/probe.c

index 1bb8cd31173bab85172159e415fdb8beda09fd55..0d0607b5079165781762f665e04aa70f1e943644 100644 (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
index 6756e97715c32f167c0ff57153e4bbb22ecff940..116a0ca65fd364f38bfeaba3cc75c9b5fd6f5955 100644 (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);