]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
ovl: fix wrong detection of 32bit inode numbers
authorAmir Goldstein <amir73il@gmail.com>
Sun, 8 Mar 2026 11:02:21 +0000 (12:02 +0100)
committerAmir Goldstein <amir73il@gmail.com>
Tue, 24 Mar 2026 15:17:26 +0000 (16:17 +0100)
The implicit FILEID_INO32_GEN encoder was changed to be explicit,
so we need to fix the detection.

When mounting overlayfs with upperdir and lowerdir on different ext4
filesystems, the expected kmsg log is:

  overlayfs: "xino" feature enabled using 32 upper inode bits.

But instead, since the regressing commit, the kmsg log was:

  overlayfs: "xino" feature enabled using 2 upper inode bits.

Fixes: e21fc2038c1b9 ("exportfs: make ->encode_fh() a mandatory method for NFS export")
Cc: stable@vger.kernel.org # v6.7+
Signed-off-by: Amir Goldstein <amir73il@gmail.com>
fs/overlayfs/util.c

index 3f1b763a8bb4cb842e5d5cebffbee6b8dbe01de9..2ea769f311c340a9805f95c145fe09e357e2cd4a 100644 (file)
@@ -85,7 +85,10 @@ int ovl_can_decode_fh(struct super_block *sb)
        if (!exportfs_can_decode_fh(sb->s_export_op))
                return 0;
 
-       return sb->s_export_op->encode_fh ? -1 : FILEID_INO32_GEN;
+       if (sb->s_export_op->encode_fh == generic_encode_ino32_fh)
+               return FILEID_INO32_GEN;
+
+       return -1;
 }
 
 struct dentry *ovl_indexdir(struct super_block *sb)