1. 01 May, 2024 1 commit
    • Jakob Unterwurzacher's avatar
      fs: TestParallelMount: avoid hitting 1000 mounts limit · 4a6c005a
      Jakob Unterwurzacher authored
      Per default, only 1000 FUSE mounts are allowed, then you get
      > /usr/bin/fusermount3: too many FUSE filesystems mounted; mount_max=N can be set in /etc/fuse.conf
      
      Let's stay well below 1000 as there may be other (unrelated)
      FUSE mounts also occupying slots.
      
      Change-Id: I2e2e094a88236ff803abba3722395c29207c8571
      4a6c005a
  2. 30 Apr, 2024 1 commit
  3. 21 Apr, 2024 1 commit
    • lch's avatar
      posixtest: fix building of tests · 8d89f3cd
      lch authored
      Prefer x/sys/unix over syscall package, which supports FreeBSD.
      
      Change-Id: Ifd3a0fd6d2b90369a6e1e74d92606a655815a6a4
      8d89f3cd
  4. 20 Apr, 2024 2 commits
  5. 14 Apr, 2024 2 commits
  6. 12 Apr, 2024 5 commits
  7. 08 Apr, 2024 3 commits
  8. 25 Mar, 2024 2 commits
  9. 24 Mar, 2024 1 commit
    • Han-Wen Nienhuys's avatar
      fuse: fix deadlock with parallel mounts · 36b35911
      Han-Wen Nienhuys authored
      Commit 1aa7b7b2 ("fs: document known deadlocks") describes a deadlock
      scenario where inheriting file descriptors triggers a spurious close
      during subprocess setup, leading to deadlock.
      
      This exact scenario actually happens when setting up the FUSE mount
      using fusermount: the fusermount process inherits one half of a socket
      pair, which is used to pass back the opened /dev/fuse file.  After the
      mount is successful, we open a file in the FUSE mount for the poll
      hack. This means that in parallel scenarios, we may use fd 3 as the
      poll hack, while also calling fusermount with inherited file
      descriptors.
      
      Solve this by grabbing fd 3 during initialization.
      
      This is not completely foolproof, as FD 0, 1 and 2 could be closed
      (and then reused) after initialization finished, but this should be
      uncommon as 0, 1 and 2 are standard input/output/error.
      
      Doing it during the init phase means that we prevent deadlock for all
      users that inherit single file descriptors.
      
      Change-Id: If5ac7c941f0ee2e13ca657c31d056a676eed3fde
      36b35911
  10. 09 Feb, 2024 1 commit
    • Han-Wen Nienhuys's avatar
      fuse: don't set flagname keyed by syscall.O_LARGEFILE · e9e7c22a
      Han-Wen Nienhuys authored
      On amd64, syscall.O_LARGEFILE is 0x0, making it be ignored as a
      key. However, the kernel always passes 0x8000 to the FUSE server for
      the OPEN call.
      
      The previous behavior causes crashes on 386, because the flagname is
      added twice.
      
      Change-Id: Ibabcdfef4d90e4fa4d02963d45a4d4cf2cba1ea2
      e9e7c22a
  11. 20 Nov, 2023 1 commit
  12. 13 Nov, 2023 2 commits
  13. 10 Nov, 2023 2 commits
  14. 08 Nov, 2023 2 commits
    • Han-Wen Nienhuys's avatar
      fs: document known deadlocks · 1aa7b7b2
      Han-Wen Nienhuys authored
      Change-Id: I1e10f22dc13207277af45cbbc2ac6740c9d4e36e
      1aa7b7b2
    • Han-Wen Nienhuys's avatar
      fuse/test: avoid low-numbered fds for FUSE-backed files · 27a473d5
      Han-Wen Nienhuys authored
      As part of the fork/exec sequence, file descriptors that should be
      inherited are remapped with dup3() in the chld process. This causes
      implicit file close operations. If the file descriptors are backed by
      FUSE, this leads to FLUSH operations. If parallelism is limited with
      GOMAXPROCS, this can cause a deadlock, as there will not be threads
      left to service the FLUSH opcodes.
      
      Fixes #489
      
      Change-Id: I81bf4ab0624495aabb5bb9ec42a55c6f23340beb
      27a473d5
  15. 05 Nov, 2023 1 commit
    • Han-Wen Nienhuys's avatar
      fuse: retain interface types · 22d9c9dc
      Han-Wen Nienhuys authored
      This avoids one allocation under lock (calling sync.Pool.Put converts to
      interface{})
      
      Change-Id: Icfe155e34300dca398cea99b73bc5e10fd362ae3
      22d9c9dc
  16. 01 Oct, 2023 1 commit
    • Yasin Turan's avatar
      fs: bridge: Add missing Lseek whence checks · fc2c4d3d
      Yasin Turan authored
      The man page for lseek(2) says that the filesystem should
      return an ENXIO when the offset is greater than the file
      size on either SEEK_DATA or SEEK_HOLE or if the offset is
      set to the end of the file with SEEK_DATA (where there is
      an implicit hole). Adding these checks to the current Lseek
      implementation.
      
      Change-Id: I8db0913a9e37209e1681ffd11a9afb7f39810132
      fc2c4d3d
  17. 30 Sep, 2023 1 commit
  18. 18 Sep, 2023 2 commits
  19. 11 Sep, 2023 1 commit
    • Han-Wen Nienhuys's avatar
      fuse: sync opcodes and capabilities · 043296a8
      Han-Wen Nienhuys authored
      This adds opcodes and capabilities from this week's upstream kernel.
      
      As of commit 53db28933 ("fuse: extend init flags"), the init message
      has been extended to 104 bytes, with more flags added in a flags2
      field.
      
      Prepare for this by allowing _OP_INIT to have short reads.
      
      Tested on Fedora 38 (Linux 6.4.14) and Fedora 34 (Linux 5.11)
      
      Change-Id: I366ecda9e23f1a329134677075ee839674ff4c57
      043296a8
  20. 10 Sep, 2023 2 commits
  21. 09 Sep, 2023 1 commit
    • Brandon Duffany's avatar
      Lazily init /dev/null fd · b5c46276
      Brandon Duffany authored
      Fixes an issue that the init() func in splice.go panics if
      /dev is not yet mounted.
      
      This allows supporting go-based init binaries which set up all the
      filesystems on the machine, including both /dev as well as
      FUSE-mounted dirs.
      
      Change-Id: I74dab18effe4df410689ae7a2ef43670fcab7bd8
      b5c46276
  22. 28 Aug, 2023 1 commit
  23. 22 Jun, 2023 2 commits
    • Han-Wen Nienhuys's avatar
      fs: return children in insertion order · 0b3e1fde
      Han-Wen Nienhuys authored
      Keep children in a slice of {name,*Inode} tuples, separately indexed
      by a string map.
      
      This ensures that we can return the children in insertion order. This
      fixes #476 and #391, and opens the road to NFS-compatible readdir
      cookies.
      
      Change-Id: I79b3483f4b12e67b63543da1294f725029a9139a
      0b3e1fde
    • Han-Wen Nienhuys's avatar
      fs: move children map into separate struct · 6eaf1ece
      Han-Wen Nienhuys authored
      Encapsulates the handling the children map, in preparation of changing
      the representation. It also reduces repetition for handling the
      parents field and changeCounter
      
      Change-Id: Ic741a376c6261dab606ed0705cdd130e70c8b69e
      6eaf1ece
  24. 21 Jun, 2023 1 commit
    • Jakob Unterwurzacher's avatar
      fuse: TestDirectMount: ignore `Optional` field · bb90a4c9
      Jakob Unterwurzacher authored
      As evidenced by the test failures that are reported, the
      `Optional` may change value between mounts. Ignore it
      in the comparison.
      
       --- FAIL: TestDirectMount (0.14s)
          mount_linux_test.go:173: DirectMount effective mount options mismatch:
              DirectMount: mountinfo.Info{ID:0, Parent:0, Major:0, Minor:0, Root:"", Mountpoint:"", Options:"rw,nosuid,nodev,relatime", Optional:"shared:417", FSType:"fuse./tmp/go-build3776165", Source:"a,b", VFSOptions:"rw,user_id=1000,group_id=1000,max_read=131072"}
              fusermount:  mountinfo.Info{ID:0, Parent:0, Major:0, Minor:0, Root:"", Mountpoint:"", Options:"rw,nosuid,nodev,relatime", Optional:"shared:373", FSType:"fuse./tmp/go-build3776165", Source:"a,b", VFSOptions:"rw,user_id=1000,group_id=1000,max_read=131072"}
      
      Fixes https://github.com/hanwen/go-fuse/issues/481
      
      Change-Id: Ie8105cf4bec7e7f461267217860cbf36e47ed329
      bb90a4c9
  25. 17 Jun, 2023 1 commit