git: sys/vfs/fuse: Fix a ton more stuff
Matthew Dillon
dillon at crater.dragonflybsd.org
Sat Mar 16 14:56:52 PDT 2024
commit 1a8e5e4cf0cfbe16676810f7edca73f98bb9b8f5
Author: Matthew Dillon <dillon at apollo.backplane.com>
Date: Sat Mar 16 14:44:21 2024 -0700
sys/vfs/fuse: Fix a ton more stuff
* Remove all the fuse_dent code. It is no longer needed.
* Remove signal mask wrappers. tsleep() isn't passing PCATCH so
signals are basically ignored.
* Add missing required FUSE_RELEASE operations (paired with CREATE/OPEN)
* Add missing required FUSE_FORGET operations (paired with LOOKUPs).
"." and ".." are not recorded by userland and do not need to be
forgotten (will confuse userland if they are).
* No reply is expected from FUSE_FORGET RPCs, add infrastructure to
handle this case.
* Index fuse_node's by their inode number, which greatly improves
hardlink handling.
* Properly store the file-handle for CREATE operations so we can
release it later (fixes some dangling .fuse_hidden* files).
* Flush the vnode and issue a FUSE_RELEASE when removing a file,
including in the rename-over-file case, if the file is no longer
open. Otherwise cached vnodes that have not yet been reclaimed
will interfere with the removal and cause the fuse userland to
create a .fuse_hidden* file.
NOTE: RELEASE operations still need a bit of work. The v_opencount
test in the file removal path is not sufficient, but we had
to close RELEASEs there for the general case to avoid many
annoying cases where .fuse_hidden* files are created.
Summary of changes:
sys/vfs/fuse/fuse.h | 37 ++--
sys/vfs/fuse/fuse_device.c | 14 +-
sys/vfs/fuse/fuse_ipc.c | 76 +++++++-
sys/vfs/fuse/fuse_node.c | 196 ++++----------------
sys/vfs/fuse/fuse_util.c | 2 +-
sys/vfs/fuse/fuse_vfsops.c | 5 +-
sys/vfs/fuse/fuse_vnops.c | 440 ++++++++++++++++++++++-----------------------
7 files changed, 350 insertions(+), 420 deletions(-)
http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/1a8e5e4cf0cfbe16676810f7edca73f98bb9b8f5
--
DragonFly BSD source repository
More information about the Commits
mailing list