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