summaryrefslogtreecommitdiff
path: root/fs/fuse/inode.c
diff options
context:
space:
mode:
authorLuis Henriques <luis@igalia.com>2025-09-16 16:53:09 +0300
committerMiklos Szeredi <mszeredi@redhat.com>2025-11-12 13:45:03 +0300
commit64becd224ff99dbdcffab22709dfcf170e52aff1 (patch)
tree2beea0c596c49d515aa14fcf585c357b59320f4b /fs/fuse/inode.c
parentab84ad5973869a660ca3ad0c54a2b84d975d47c4 (diff)
downloadlinux-64becd224ff99dbdcffab22709dfcf170e52aff1.tar.xz
fuse: new work queue to invalidate dentries from old epochs
With the infrastructure introduced to periodically invalidate expired dentries, it is now possible to add an extra work queue to invalidate dentries when an epoch is incremented. This work queue will only be triggered when the 'inval_wq' parameter is set. Signed-off-by: Luis Henriques <luis@igalia.com> Signed-off-by: Miklos Szeredi <mszeredi@redhat.com>
Diffstat (limited to 'fs/fuse/inode.c')
-rw-r--r--fs/fuse/inode.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
index 793f1766ae5a..3087165a6004 100644
--- a/fs/fuse/inode.c
+++ b/fs/fuse/inode.c
@@ -977,6 +977,7 @@ void fuse_conn_init(struct fuse_conn *fc, struct fuse_mount *fm,
refcount_set(&fc->count, 1);
atomic_set(&fc->dev_count, 1);
atomic_set(&fc->epoch, 1);
+ INIT_WORK(&fc->epoch_work, fuse_epoch_work);
init_waitqueue_head(&fc->blocked_waitq);
fuse_iqueue_init(&fc->iq, fiq_ops, fiq_priv);
INIT_LIST_HEAD(&fc->bg_queue);
@@ -1029,6 +1030,7 @@ void fuse_conn_put(struct fuse_conn *fc)
fuse_dax_conn_free(fc);
if (fc->timeout.req_timeout)
cancel_delayed_work_sync(&fc->timeout.work);
+ cancel_work_sync(&fc->epoch_work);
if (fiq->ops->release)
fiq->ops->release(fiq);
put_pid_ns(fc->pid_ns);