]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
exfat: use truncate_inode_pages_final() at evict_inode()
authorYang Wen <anmuxixixi@gmail.com>
Wed, 25 Feb 2026 14:59:42 +0000 (22:59 +0800)
committerNamjae Jeon <linkinjeon@kernel.org>
Thu, 26 Feb 2026 09:33:50 +0000 (18:33 +0900)
commit4637b4cdd7aebfa2e38fa39f4db91fa089b809c5
treee5daba01f347c6457cad9251a372f6da8696d46e
parent7dff99b354601dd01829e1511711846e04340a69
exfat: use truncate_inode_pages_final() at evict_inode()

Currently, exfat uses truncate_inode_pages() in exfat_evict_inode().
However, truncate_inode_pages() does not mark the mapping as exiting,
so reclaim may still install shadow entries for the mapping until
the inode teardown completes.

In older kernels like Linux 5.10, if shadow entries are present
at that point,clear_inode() can hit

    BUG_ON(inode->i_data.nrexceptional);

To align with VFS eviction semantics and prevent this situation,
switch to truncate_inode_pages_final() in ->evict_inode().

Other filesystems were updated to use truncate_inode_pages_final()
in ->evict_inode() by commit 91b0abe36a7b ("mm + fs: store shadow
entries in page cache")'.

Signed-off-by: Yang Wen <anmuxixixi@gmail.com>
Signed-off-by: Namjae Jeon <linkinjeon@kernel.org>
fs/exfat/inode.c