]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
fuse: add prune notification
authorMiklos Szeredi <mszeredi@redhat.com>
Tue, 2 Sep 2025 08:22:06 +0000 (10:22 +0200)
committerMiklos Szeredi <mszeredi@redhat.com>
Fri, 5 Sep 2025 07:11:28 +0000 (09:11 +0200)
commit3f29d59e92a96d843c2ff10ebfed92ac26878658
tree75ce74356872ee6f3db147085c9c4090d6b3f647
parent60e1579a0dcf2c432286ef83ee470173d6db2f13
fuse: add prune notification

Some fuse servers need to prune their caches, which can only be done if the
kernel's own dentry/inode caches are pruned first to avoid dangling
references.

Add FUSE_NOTIFY_PRUNE, which takes an array of node ID's to try and get rid
of.  Inodes with active references are skipped.

A similar functionality is already provided by FUSE_NOTIFY_INVAL_ENTRY with
the FUSE_EXPIRE_ONLY flag.  Differences in the interface are

FUSE_NOTIFY_INVAL_ENTRY:

  - can only prune one dentry

  - dentry is determined by parent ID and name

  - if inode has multiple aliases (cached hard links), then they would have
    to be invalidated individually to be able to get rid of the inode

FUSE_NOTIFY_PRUNE:

  - can prune multiple inodes

  - inodes determined by their node ID

  - aliases are taken care of automatically

Reviewed-by: Joanne Koong <joannelkoong@gmail.com>
Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
fs/fuse/dev.c
fs/fuse/fuse_i.h
fs/fuse/inode.c
include/uapi/linux/fuse.h