diff options
| author | Luis Henriques <luis@igalia.com> | 2025-09-16 16:53:09 +0300 |
|---|---|---|
| committer | Miklos Szeredi <mszeredi@redhat.com> | 2025-11-12 13:45:03 +0300 |
| commit | 64becd224ff99dbdcffab22709dfcf170e52aff1 (patch) | |
| tree | 2beea0c596c49d515aa14fcf585c357b59320f4b /fs/fuse/inode.c | |
| parent | ab84ad5973869a660ca3ad0c54a2b84d975d47c4 (diff) | |
| download | linux-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.c | 2 |
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); |
