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.
Tested with the new selftest under UML and KVM. 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 | 3 + fs/fuse/inode.c | 4 +- include/uapi/linux/fuse.h | 10 +- .../selftests/filesystems/fuse/.gitignore | 1 + .../selftests/filesystems/fuse/Makefile | 3 +- .../filesystems/fuse/excl_create_test.c | 339 ++++++++++++++++++ 7 files changed, 367 insertions(+), 3 deletions(-) create mode 100644 tools/testing/selftests/filesystems/fuse/excl_create_test.c base-commit: b776cbe24cc1b79c7f5101762b0069b3f48b6a4b -- 2.50.1
