FUSE_FORGET requests are not used in some cases (e.g., juicefs) but have an impact on the system. So add no forget support. The details about no forget support can be seen in the following patches. Patch 1 cleans up the allocation and the processing of forget requests. Patch 2 adds the no forget support based on patch 1. The link of libfuse with no forget support: https://github.com/yangyun50/libfuse/commit/ef7061fef6f8c7154c975e1b0348dc9f12f945fe It enables the no forget by default if the filesystem doesn't implement the forget operation (i.e., se->op.forget == NULL). --- v1: https://lore.kernel.org/lkml/20240726083752.302301-1-yangyun50@xxxxxxxxxx/ v2: https://lore.kernel.org/lkml/20240824092553.730338-1-yangyun50@xxxxxxxxxx/ Changes from v1->v2: - Still use fuse_queue_forget in patch 1 (Miklos) - Simplify function name in patch 2 (Josef) Changes from v2->v3: - Still preallocate fuse_forget_link on the inode creation in patch1 (Miklos) yangyun (2): fuse: move fuse_forget_link allocation inside fuse_queue_forget() fuse: add support for no forget requests fs/fuse/dev.c | 16 ++++++++-- fs/fuse/dir.c | 63 +++++++++------------------------------ fs/fuse/fuse_i.h | 33 +++++++++++++++++--- fs/fuse/inode.c | 53 ++++++++++++++++---------------- fs/fuse/readdir.c | 38 ++++++----------------- include/uapi/linux/fuse.h | 3 ++ 6 files changed, 96 insertions(+), 110 deletions(-) -- 2.33.0