From: Luis Henriques <luis@igalia.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: Bernd Schubert <bernd@bsbernd.com>,
Laura Promberger <laura.promberger@cern.ch>,
Dave Chinner <david@fromorbit.com>,
Matt Harvey <mharvey@jumptrading.com>,
linux-fsdevel@vger.kernel.org, kernel-dev@igalia.com,
linux-kernel@vger.kernel.org, Luis Henriques <luis@igalia.com>
Subject: [RFC PATCH v5 0/2] fuse: work queues to invalided dentries
Date: Thu, 28 Aug 2025 17:29:49 +0100 [thread overview]
Message-ID: <20250828162951.60437-1-luis@igalia.com> (raw)
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(-)
next reply other threads:[~2025-08-28 16:30 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-28 16:29 Luis Henriques [this message]
2025-08-28 16:29 ` [RFC PATCH v5 1/2] fuse: new work queue to periodically invalidate expired dentries Luis Henriques
2025-09-04 10:20 ` Miklos Szeredi
2025-09-04 14:00 ` Luis Henriques
2025-09-04 15:12 ` Miklos Szeredi
2025-09-04 15:30 ` Luis Henriques
2025-08-28 16:29 ` [RFC PATCH v5 2/2] fuse: new work queue to invalidate dentries from old epochs Luis Henriques
2025-09-04 10:35 ` Miklos Szeredi
2025-09-04 14:11 ` Luis Henriques
2025-09-04 14:38 ` Miklos Szeredi
2025-09-04 15:21 ` Luis Henriques
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250828162951.60437-1-luis@igalia.com \
--to=luis@igalia.com \
--cc=bernd@bsbernd.com \
--cc=david@fromorbit.com \
--cc=kernel-dev@igalia.com \
--cc=laura.promberger@cern.ch \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mharvey@jumptrading.com \
--cc=miklos@szeredi.hu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®