[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250828162951.60437-1-luis@igalia.com>
Date: Thu, 28 Aug 2025 17:29:49 +0100
From: Luis Henriques <luis@...lia.com>
To: Miklos Szeredi <miklos@...redi.hu>
Cc: Bernd Schubert <bernd@...ernd.com>,
Laura Promberger <laura.promberger@...n.ch>,
Dave Chinner <david@...morbit.com>,
Matt Harvey <mharvey@...ptrading.com>,
linux-fsdevel@...r.kernel.org,
kernel-dev@...lia.com,
linux-kernel@...r.kernel.org,
Luis Henriques <luis@...lia.com>
Subject: [RFC PATCH v5 0/2] fuse: work queues to invalided dentries
Hi Miklos,
Since there are huge changes in v5, I decided to send an early version of
this patch(set). I'm sure there are bugs and stupid mistakes, but I'd
love to get some early feedback before further testing it. And that's why
I also decided to add back the RFC tag to the subject.
One annoying effect of making the dentries trees global data structures is
that it makes things more complicated to handle epoch changes (2nd patch).
It forces the work queue to walk through *all* the dentries in *all* the
trees.
Changes since v4:
- Dropped extra check in fuse_dentry_tree_add_node() (Chunsheng)
- Make the dentries trees global instead of per fuse_conn (Miklos)
- Protect trees with hashed locking instead of a single lock (Miklos)
- Added new work queue (2nd patch) specifically to handle epoch (Miklos)
Changes since v3:
- Use of need_resched() instead of limiting the work queue to run for 5
seconds
- Restore usage of union with rcu_head, in struct fuse_dentry
- Minor changes in comments (e.g. s/workqueue/work queue/)
Changes since v2:
- Major rework, the dentries tree nodes are now in fuse_dentry and they are
tied to the actual dentry lifetime
- Mount option is now a module parameter
- workqueue now runs for at most 5 seconds before rescheduling
Luis Henriques (2):
fuse: new work queue to periodically invalidate expired dentries
fuse: new work queue to invalidate dentries from old epochs
fs/fuse/dev.c | 7 +-
fs/fuse/dir.c | 251 +++++++++++++++++++++++++++++++++++++++++++----
fs/fuse/fuse_i.h | 13 +++
fs/fuse/inode.c | 48 +++++----
4 files changed, 276 insertions(+), 43 deletions(-)
Powered by blists - more mailing lists