From: Jimmy Zuber <jamz@amazon.com>
To: Miklos Szeredi <miklos@szeredi.hu>
Cc: <fuse-devel@lists.linux.dev>, <linux-kselftest@vger.kernel.org>,
"Shuah Khan" <shuah@kernel.org>,
Bernd Schubert <bernd@bsbernd.com>,
Jim Harris <jiharris@nvidia.com>,
Horst Birthelmer <horst@birthelmer.de>,
Luis Henriques <luis@igalia.com>
Subject: [PATCH v2 0/2] fuse: skip LOOKUP before exclusive create
Date: Thu, 29 Oct 2026 18:50:08 +0000 [thread overview]
Message-ID: <20261029185010.3080336-1-jamz@amazon.com> (raw)
mkdir(), mknod(), symlink(), link() and renameat2() with RENAME_NOREPLACE
look the new name up with FUSE_LOOKUP before sending the request. This
series adds an INIT flag, FUSE_EXCL_CREATE, with which the server fails
these requests with -EEXIST for an existing name, so the kernel can skip
the LOOKUP.
This series is independent of "fuse: atomic open" [1], which covers
open(). Both add a 7.48 entry to the uapi changelog.
Tested with the new selftest under UML and KVM.
Changes in v2 (from the Sashiko review of v1 [2]):
- Use INIT bit 46; bit 45 is FUSE_PASSTHROUGH_V2.
- Document that an existing name can fail with the error of a VFS check
that runs before the request, such as -EROFS.
- Keep the test server's state mapped at teardown, where the server
thread may still read it, and mount in a private mount namespace.
Skip without /dev/fuse or kernel support. Test mknod() and link() of
an existing name, and the dcache after each request.
- Rebase onto fuse for-next.
v1: https://lore.kernel.org/fuse-devel/20261020153432.3812719-1-jamz@amazon.com/
[1] https://lore.kernel.org/fuse-devel/20261029130758.818617-1-jamz@amazon.com/
[2] https://sashiko.dev/#/patchset/20261020153432.3812719-1-jamz@amazon.com
Jimmy Zuber (2):
fuse: skip LOOKUP before exclusive create
selftests/fuse: test FUSE_EXCL_CREATE
fs/fuse/dir.c | 10 +
fs/fuse/fuse_i.h | 6 +
fs/fuse/inode.c | 4 +-
include/uapi/linux/fuse.h | 12 +-
.../selftests/filesystems/fuse/.gitignore | 1 +
.../selftests/filesystems/fuse/Makefile | 3 +-
.../filesystems/fuse/excl_create_test.c | 386 ++++++++++++++++++
7 files changed, 419 insertions(+), 3 deletions(-)
create mode 100644 tools/testing/selftests/filesystems/fuse/excl_create_test.c
base-commit: 9b1da7b4a4e197072e630c3b85d4100a399752ff
--
2.50.1
next reply other threads:[~2026-10-29 18:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-29 18:50 Jimmy Zuber [this message]
2026-10-29 18:50 ` [PATCH v2 1/2] fuse: skip LOOKUP before exclusive create Jimmy Zuber
2026-10-29 18:50 ` [PATCH v2 2/2] selftests/fuse: test FUSE_EXCL_CREATE Jimmy Zuber
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=20261029185010.3080336-1-jamz@amazon.com \
--to=jamz@amazon.com \
--cc=bernd@bsbernd.com \
--cc=fuse-devel@lists.linux.dev \
--cc=horst@birthelmer.de \
--cc=jiharris@nvidia.com \
--cc=linux-kselftest@vger.kernel.org \
--cc=luis@igalia.com \
--cc=miklos@szeredi.hu \
--cc=shuah@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.