]> git.ipfire.org Git - thirdparty/e2fsprogs.git/commitdiff
e2fsck: require that fast symlinks don't have EXT4_EXTENTS_FL
authorEric Biggers <ebiggers@google.com>
Sat, 3 Mar 2018 00:59:22 +0000 (16:59 -0800)
committerTheodore Ts'o <tytso@mit.edu>
Sat, 3 Mar 2018 22:49:53 +0000 (17:49 -0500)
It doesn't make sense for EXT4_EXTENTS_FL to be set on a fast symlink.
The kernel doesn't set it, and it ignores it if set.  Meanwhile, e2fsck
is stricter: it will try to validate the extent tree, which will almost
certainly fail (assuming the symlink is, in fact, a fast symlink).

Make this behavior more explicit by rejecting EXT4_EXTENTS_FL for fast
symlinks, rather than going ahead and trying to validate an extent tree.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
e2fsck/pass1.c

index 46d70d14e5b97e753d34bf6278f5ccb2c1dae92a..fccd8816ad12d57ceca99d727df10db653b59772 100644 (file)
@@ -203,9 +203,9 @@ int e2fsck_pass1_check_symlink(ext2_filsys fs, ext2_ino_t ino,
                return 1;
        }
 
-       if (ext2fs_is_fast_symlink(inode) &&
-           !(inode->i_flags & EXT4_EXTENTS_FL)) {
-
+       if (ext2fs_is_fast_symlink(inode)) {
+               if (inode->i_flags & EXT4_EXTENTS_FL)
+                       return 0;
                buf = (char *)inode->i_block;
                buflen = sizeof(inode->i_block);
        } else {