mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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(-)


             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®