Andreas, We actually got a test case f_ea_inode_fast_symlink for this, Could you share the version with the test case? Thanks Dongyang On Thu, 2025-07-17 at 00:51 -0600, Andreas Dilger wrote: > Use ext4_inode_is_fast_symlink() in ext2fs_inode_has_valid_blocks2() > instead of depending exclusively on i_blocks == 0 to determine > if an inode is a fast symlink. Otherwise, if a fast symlink has a > large external xattr inode that increases i_blocks, it will be > incorrectly reported as having invalid blocks. > > Change-Id: Ibde2348da39401601abedd603bd7e4ef97091abe > Fixes: 0684a4f33 ("Overhaul extended attribute handling") > Signed-off-by: Andreas Dilger <adilger@xxxxxxxxxxxxx> > Reviewed-by: Li Dongyang <dongyangli@xxxxxxx> > Reviewed-on: https://review.whamcloud.com/59871 > Lustre-bug-id: https://jira.whamcloud.com/browse/LU-19121 > --- > lib/ext2fs/valid_blk.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/lib/ext2fs/valid_blk.c b/lib/ext2fs/valid_blk.c > index db5d90ae4..332e9c66a 100644 > --- a/lib/ext2fs/valid_blk.c > +++ b/lib/ext2fs/valid_blk.c > @@ -43,6 +43,7 @@ int ext2fs_inode_has_valid_blocks2(ext2_filsys fs, > struct ext2_inode *inode) > /* With no EA block, we can rely on i_blocks > */ > if (inode->i_blocks == 0) > return 0; > + return !ext2fs_is_fast_symlink(inode); > } else { > /* With an EA block, life gets more tricky > */ > if (inode->i_size >= EXT2_N_BLOCKS*4)