1. 15 May, 2024 1 commit
    • lch's avatar
      posixtest: fix test FcntlFlockSetLk · ae8e0199
      lch authored
      This test case is going to test whether the file lock works well on the
      system. It firstly adds a lock and then get the lock through syscalls.
      It uses F_OFD_GETLK command of fcntl(2) to get the lock info on an
      opened file description[1], which is not defined on the FreeBSD. This
      commit seperate the process of getting the information of lock for
      different OSes, and mimic the behaviour of F_OFD_GETLK on FreeBSD.
      
      [1]: https://www.gnu.org/software/libc/manual/html_node/Open-File-Description-Locks.html
      
      Change-Id: I8abae0e7040fc667143eea028731e341be9b1baf
      ae8e0199
  2. 12 May, 2024 1 commit
  3. 01 May, 2024 2 commits
  4. 30 Apr, 2024 1 commit
  5. 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
  6. 20 Apr, 2024 2 commits
  7. 14 Apr, 2024 2 commits
  8. 12 Apr, 2024 5 commits
  9. 08 Apr, 2024 3 commits
  10. 25 Mar, 2024 2 commits
  11. 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
  12. 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
  13. 20 Nov, 2023 1 commit
  14. 13 Nov, 2023 2 commits
  15. 10 Nov, 2023 2 commits
  16. 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
  17. 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
  18. 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
  19. 30 Sep, 2023 1 commit
  20. 18 Sep, 2023 2 commits
  21. 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
  22. 10 Sep, 2023 2 commits
  23. 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
  24. 28 Aug, 2023 1 commit
  25. 22 Jun, 2023 1 commit
    • 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