This patch adds a new mapping flag AS_NO_DATA_INTEGRITY which signifies that a mapping does not have data integrity guarantees, and skips waiting on writeout for these mappings in wait_sb_inodes(), as these mappings cannot guarantee that data is persistently stored. This patch sets this flag on fuse mappings.
This fixes the userspace regression reported by Athul and J. upstream in [1][2] where if there is a bug in a fuse server that causes the server to never complete writeback, it will make wait_sb_inodes() wait forever.
Thanks, Joanne
[1] https://lore.kernel.org/regressions/CAJnrk1ZjQ8W8NzojsvJPRXiv9TuYPNdj8Ye7=Cg... [2] https://lore.kernel.org/linux-fsdevel/aT7JRqhUvZvfUQlV@eldamar.lan/
Changelog: v2: https://lore.kernel.org/linux-fsdevel/20251215030043.1431306-1-joannelkoong@... * Add comments to commit message (David) and to wait_sb_inodes() (Andrew) * Add Bernd's Reviewed-by and J's Tested-by
v1: https://lore.kernel.org/linux-mm/20251120184211.2379439-1-joannelkoong@gmail... * Change AS_WRITEBACK_MAY_HANG to AS_NO_DATA_INTEGRITY and keep AS_WRITEBACK_MAY_DEADLOCK_ON_RECLAIM as is.
Joanne Koong (1): fs/writeback: skip AS_NO_DATA_INTEGRITY mappings in wait_sb_inodes()
fs/fs-writeback.c | 7 ++++++- fs/fuse/file.c | 4 +++- include/linux/pagemap.h | 11 +++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-)