FUSE: Implement full atomic open
From: | Bernd Schubert <bschubert-AT-ddn.com> | |
To: | linux-fsdevel-AT-vger.kernel.org | |
Subject: | [PATCH v6 0/2] FUSE: Implement full atomic open | |
Date: | Fri, 07 Jul 2023 15:27:44 +0200 | |
Message-ID: | <20230707132746.1892211-1-bschubert@ddn.com> | |
Cc: | bernd.schubert-AT-fastmail.fm, miklos-AT-szeredi.hu, fuse-devel-AT-lists.sourceforge.net, vgoyal-AT-redhat.com, dsingh-AT-ddn.com, Bernd Schubert <bschubert-AT-ddn.com> | |
Archive-link: | Article |
In FUSE, as of now, uncached lookups are expensive over the wire. E.g additional latencies and stressing (meta data) servers from thousands of clients. With atomic-open lookup before open can be avoided. Here is the link to performance numbers https://lore.kernel.org/linux-fsdevel/20220322121212.5087... Here is the libfuse pull request https://github.com/libfuse/libfuse/pull/813 The patches are passing passthrough_hp xfstests (libfuse part applied), although we had to introduce umount retries into xfstests, as recent kernels/xfstests fail umount in some tests with EBUSY - independent of atomic open. v6: Addressed Miklos comments and rewrote atomic open into its own function and fuse opcode. Dropped for now is the revalidate optimization, we have the code/patch, but it needs more testing. Also easier to first agree on atomic open and then to land the next optimization. v5: Addressed comments v3: Addressed comments v4: Addressed all comments and refactored the code into 3 separate patches respectively for Atomic create, Atomic open, optimizing lookup in d_revalidate(). v3: handle review comments v2: fixed a memory leak in <fuse_atomic_open_common> Bernd Schubert (1): fuse: rename fuse_create_open Dharmendra Singh (1): fuse: introduce atomic open fs/fuse/dir.c | 176 +++++++++++++++++++++++++++++++++++++- fs/fuse/fuse_i.h | 3 + include/uapi/linux/fuse.h | 3 + 3 files changed, 178 insertions(+), 4 deletions(-) -- 2.37.2