Whamcloud - gitweb
LU-19121 ldiskfs: check fast symlink for ea_inode correctly 79/59879/2
authorAndreas Dilger <adilger@whamcloud.com>
Sat, 21 Jun 2025 14:55:51 +0000 (08:55 -0600)
committerOleg Drokin <green@whamcloud.com>
Tue, 8 Jul 2025 03:58:54 +0000 (03:58 +0000)
The check for a fast symlink in the presence of only an external
xattr inode is incorrect. If a fast symlink has no xattr block
(i_file_acl == 0), but has an external xattr inode that increases
inode i_blocks, then the check for a fast symlink will incorrectly
fail and __ext4_iget()->ext4_ind_check_inode() will report an error
when the inode is next loaded into memory:

    # ln -s foo /mnt/tmp/bar
    # setfattr -h -n trusted.test \
               -v "$(head -200 /etc/services)" /mnt/tmp/bar
    # umount /mnt/tmp
    # mount /mnt/tmp
    # ls -l /mnt/tmp
    ls: cannot access '/mnt/tmp/bar': Structure needs cleaning
    total 4
     ? l?????????? ? ?    ?        ?            ? bar
    # dmesg | tail -1
    EXT4-fs error (device dm-8): __ext4_iget:5098:
        inode #24578: block 7303014: comm ls: invalid block

The ext4_inode_is_fast_symlink() check should use the superblock
EA_INODE feature flag, not the inode EXT4_EA_INODE_FL flag, since
the latter is only set on the xattr inode itself, and not on the
inode that references it.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Change-Id: Ia7c1c59fcc005a3be11435325a96b809592540e5
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/59879
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Li Dongyang <dongyangli@ddn.com>
Reviewed-by: Alex Zhuravlev <bzzz@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
53 files changed:
ldiskfs/kernel_patches/patches/base/ext4-symlink-xattr-inode-fix.patch [new file with mode: 0644]
ldiskfs/kernel_patches/series/ldiskfs-4.12-sles15-22.series
ldiskfs/kernel_patches/series/ldiskfs-4.12-sles15.series
ldiskfs/kernel_patches/series/ldiskfs-4.12-sles15sp1-7.series
ldiskfs/kernel_patches/series/ldiskfs-4.12-sles15sp1.series
ldiskfs/kernel_patches/series/ldiskfs-4.15.0-20-ubuntu18.series
ldiskfs/kernel_patches/series/ldiskfs-4.15.0-24-ubuntu18.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.10-553.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.10.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.4.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.5.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.6.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.7.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.8.series
ldiskfs/kernel_patches/series/ldiskfs-4.18-rhel8.9.series
ldiskfs/kernel_patches/series/ldiskfs-5.0.0-13-ubuntu19.series
ldiskfs/kernel_patches/series/ldiskfs-5.10.0-ml.series
ldiskfs/kernel_patches/series/ldiskfs-5.10.0-oe2203.series
ldiskfs/kernel_patches/series/ldiskfs-5.10.0-oe2203sp1.series
ldiskfs/kernel_patches/series/ldiskfs-5.11.0-40-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.1.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.2.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.3.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.4-427.13.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.4.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.5.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.6.series
ldiskfs/kernel_patches/series/ldiskfs-5.14-rhel9.series
ldiskfs/kernel_patches/series/ldiskfs-5.14.21-sles15sp4.series
ldiskfs/kernel_patches/series/ldiskfs-5.14.21-sles15sp5.series
ldiskfs/kernel_patches/series/ldiskfs-5.15.0-106-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.15.0-83-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.19.0-35-ubuntu.series
ldiskfs/kernel_patches/series/ldiskfs-5.3.18-sles15sp2.series
ldiskfs/kernel_patches/series/ldiskfs-5.3.18-sles15sp3-59.series
ldiskfs/kernel_patches/series/ldiskfs-5.3.18-sles15sp3.series
ldiskfs/kernel_patches/series/ldiskfs-5.4.0-42-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.4.0-66-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.4.0-80-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.4.0-90-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.4.0-ml.series
ldiskfs/kernel_patches/series/ldiskfs-5.4.136-ml.series
ldiskfs/kernel_patches/series/ldiskfs-5.4.21-ml.series
ldiskfs/kernel_patches/series/ldiskfs-5.8.0-53-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-5.8.0-63-ubuntu20.series
ldiskfs/kernel_patches/series/ldiskfs-6.1.38-ml.series
ldiskfs/kernel_patches/series/ldiskfs-6.10-ml.series
ldiskfs/kernel_patches/series/ldiskfs-6.11-ml.series
ldiskfs/kernel_patches/series/ldiskfs-6.12-ml.series
ldiskfs/kernel_patches/series/ldiskfs-6.6-ml.series
ldiskfs/kernel_patches/series/ldiskfs-6.7-ml.series
ldiskfs/kernel_patches/series/ldiskfs-6.8.0-45-ubuntu24.series
lustre/tests/sanity.sh

diff --git a/ldiskfs/kernel_patches/patches/base/ext4-symlink-xattr-inode-fix.patch b/ldiskfs/kernel_patches/patches/base/ext4-symlink-xattr-inode-fix.patch
new file mode 100644 (file)
index 0000000..7daa3e6
--- /dev/null
@@ -0,0 +1,44 @@
+ext4: check fast symlink for ea_inode correctly
+
+The check for a fast symlink in the presence of only an
+external xattr inode is incorrect.  If a fast symlink does
+not have an xattr block (i_file_acl == 0), but does have
+an external xattr inode that increases inode i_blocks, then
+the check for a fast symlink will incorrectly fail and
+__ext4_iget()->ext4_ind_check_inode() will report an error
+when the inode is next loaded into memory:
+
+    # ln -s foo /mnt/tmp/bar
+    # setfattr -h -n trusted.test \
+               -v "$(head -200 /etc/services)" /mnt/tmp/bar
+    # umount /mnt/tmp
+    # mount /mnt/tmp
+    # ls -l /mnt/tmp
+    ls: cannot access '/mnt/tmp/bar': Structure needs cleaning
+    total 4
+     ? l?????????? ? ?    ?        ?            ? bar
+    # dmesg | tail -1
+    EXT4-fs error (device dm-8): __ext4_iget:5098:
+        inode #24578: block 7303014: comm ls: invalid block
+
+The ext4_inode_is_fast_symlink() check should use the
+superblock EA_INODE feature flag, not EXT4_EA_INODE_FL,
+since the latter is only set on the xattr inode itself,
+and not on the inode that references it.
+
+Fixes: fc82228a5e38 ("ext4: support fast symlinks from ext3 file systems")
+Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
+
+Index: linux-stage/fs/ext4/inode.c
+===================================================================
+--- linux-stage.orig/fs/ext4/inode.c
++++ linux-stage/fs/ext4/inode.c
+@@ -148,7 +148,7 @@ static int ext4_meta_trans_blocks(struct
+  */
+ int ext4_inode_is_fast_symlink(struct inode *inode)
+ {
+-      if (!(EXT4_I(inode)->i_flags & EXT4_EA_INODE_FL)) {
++      if (!ext4_has_feature_ea_inode(inode->i_sb)) {
+               int ea_blocks = EXT4_I(inode)->i_file_acl ?
+                               EXT4_CLUSTER_SIZE(inode->i_sb) >> 9 : 0;
index 12ceff8..e971983 100644 (file)
@@ -19,6 +19,7 @@ suse15/ext4-max-dir-size.patch
 suse15/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 ubuntu18/ext4-attach-jinode-in-writepages.patch
 suse15/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 269629c..c300f7f 100644 (file)
@@ -19,6 +19,7 @@ suse15/ext4-max-dir-size.patch
 suse15/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 suse15/ext4-attach-jinode-in-writepages.patch
 suse15/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 392b828..7a872ca 100644 (file)
@@ -19,6 +19,7 @@ suse15/ext4-max-dir-size.patch
 suse15/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 ubuntu18/ext4-attach-jinode-in-writepages.patch
 suse15/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index fc4b2b8..c277054 100644 (file)
@@ -19,6 +19,7 @@ suse15/ext4-max-dir-size.patch
 suse15/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 suse15/ext4-attach-jinode-in-writepages.patch
 suse15/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index ceab062..be222d3 100644 (file)
@@ -16,6 +16,7 @@ ubuntu18/ext4-max-dir-size.patch
 ubuntu18/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 ubuntu18/ext4-attach-jinode-in-writepages.patch
 ubuntu18/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 0e4aa26..feedfbc 100644 (file)
@@ -16,6 +16,7 @@ ubuntu18/ext4-max-dir-size.patch
 ubuntu18/ext4-corrupted-inode-block-bitmaps-handling-patches-001.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 ubuntu18/ext4-attach-jinode-in-writepages.patch
 ubuntu18/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 9fef225..ae53f84 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.7/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 0c4cb3a..2d5771a 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.7/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index c6a006b..a85046c 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 34c7a9b..468356b 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index b53e4cd..8ca34fa 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 9fef225..ae53f84 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.7/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index de867e7..221f4a5 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.7/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 9fef225..ae53f84 100644 (file)
@@ -17,6 +17,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8.7/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8.2/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 7c51902..e411b50 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 ubuntu18/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 ubuntu18/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index fa4b1e7..518d454 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 linux-5.8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 6a5ec94..31babb2 100644 (file)
@@ -17,6 +17,7 @@ linux-5.8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
 rhel7.6/ext4-export-orphan-add.patch
index 5e43d3f..55b9c8a 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 linux-5.8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 04f625b..2254a59 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 linux-5.8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 5d6e56f..4bc572e 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-5.16/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index f5d61a6..e860fb9 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-5.16/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel9.2/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index f7a9da8..6adafcd 100644 (file)
@@ -17,6 +17,7 @@ linux-5.16/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel9.2/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
 rhel7.6/ext4-export-orphan-add.patch
index 9c4b5fb..46a4e69 100644 (file)
@@ -17,6 +17,7 @@ rhel9.4/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
 rhel7.6/ext4-export-orphan-add.patch
index 5fa1ef9..ab5cbe3 100644 (file)
@@ -17,6 +17,7 @@ rhel9.4/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
 rhel7.6/ext4-export-orphan-add.patch
index cae7767..24ada22 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 rhel9.4/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 0cbef8c..cfdb168 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 rhel9.4/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 885622c..418ce94 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-5.16/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 50dd678..144b625 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 linux-5.14/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index eca5188..8b60faf 100644 (file)
@@ -17,6 +17,7 @@ linux-5.14/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
+base/ext4-symlink-xattr-inode-fix.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
 rhel7.6/ext4-export-orphan-add.patch
index be77e23..f27661b 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 ubuntu20.04.5/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 ubuntu20.04.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 0b80caf..d313036 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 ubuntu20.04.5/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.10/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 ubuntu20.04.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 5bf7790..f060eeb 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-5.16/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index dd738e1..618e17f 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 1c64534..7326a5e 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 1f6534a..ccd5709 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 2d847f5..2b7b818 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 3877752..ce8b554 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 2b26c15..6d6c27e 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 4756eda..3eab203 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 rhel8.3/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 186e093..8a4e164 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 1101f20..0a84551 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 2d847f5..2b7b818 100644 (file)
@@ -16,6 +16,7 @@ rhel8/ext4-max-dir-size.patch
 rhel8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 1c2b371..896a825 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 linux-5.8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 6d49e6c..08844aa 100644 (file)
@@ -16,6 +16,7 @@ linux-5.8/ext4-max-dir-size.patch
 linux-5.8/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 linux-5.4/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.4/ext4-attach-jinode-in-writepages.patch
 rhel8/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index d2e4846..4c3c259 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-5.16/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-5.10/ext4-attach-jinode-in-writepages.patch
 linux-6.1/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index f534161..8dc35d8 100644 (file)
@@ -16,6 +16,7 @@ linux-6.10/ext4-max-dir-size.patch
 linux-6.10/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 110bd5c..d8df90c 100644 (file)
@@ -16,6 +16,7 @@ linux-6.10/ext4-max-dir-size.patch
 linux-6.10/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index d310505..e228bdf 100644 (file)
@@ -16,6 +16,7 @@ linux-6.10/ext4-max-dir-size.patch
 linux-6.10/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index b0e4123..ecd352c 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-6.6/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 55bdec2..1e2fbc7 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-6.7/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index fc45e33..281f145 100644 (file)
@@ -16,6 +16,7 @@ rhel9/ext4-max-dir-size.patch
 linux-6.7/ext4-corrupted-inode-block-bitmaps-handling-patches.patch
 rhel9/ext4-give-warning-with-dir-htree-growing.patch
 ubuntu18/ext4-jcb-optimization.patch
+base/ext4-symlink-xattr-inode-fix.patch
 linux-6.2/ext4-attach-jinode-in-writepages.patch
 linux-6.5/ext4-dont-check-before-replay.patch
 base/ext4-fix-ext4_inode_attach_jinode.patch
index 8ce6842..8357b79 100755 (executable)
@@ -909,6 +909,7 @@ test_17o() {
 }
 run_test 17o "stat file with incompat LMA feature"
 
+
 # LU-17660: "cannot overwrite directory" when creating symlink
 test_17p() {
        touch $DIR/$tfile
@@ -929,6 +930,21 @@ test_17p() {
 }
 run_test 17p "symlink overwrite directory error message"
 
+test_17q() {
+       (( $MDS1_VERSION >= $(version_code 2.14.0-ddn212) )) ||
+               skip "Need MDS >= 2.14.0-ddn212 for symlink xattr"
+       local mdts=$(comma_list $(mdts_nodes))
+
+       ln -s foo $DIR/$tfile
+       setfattr -h -n trusted.test -v "$(head -200 /etc/services)" $DIR/$tfile ||
+               error "setfattr large xattr on symlink failed"
+       cancel_lru_locks mdc
+       sysctl -w vm.drop_caches=3
+       do_nodes $mdts sysctl -w vm.drop_caches=3
+       ls -l $DIR/$tfile || error "ls -l failed"
+}
+run_test 17q "set large xattr on fast symlink"
+
 test_18() {
        touch $DIR/$tfile || error "Failed to touch $DIR/$tfile: $?"
        ls $DIR || error "Failed to ls $DIR: $?"