-
-
Notifications
You must be signed in to change notification settings - Fork 3.2k
fix(fuse): switch to hanwen/go-fuse #11272
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
66 commits
Select commit
Hold shift + click to select a range
b3fa36a
test(fuse): consolidate FUSE tests into test/cli/fuse
lidel b9c7332
docs: document FUSE test split between unit and e2e
lidel 0c263b2
ci: prevent stale FUSE mounts from failing fuse-tests
lidel 7935dcd
ci: only symlink fusermount3 when fusermount is missing
lidel a588c23
fix(fuse): remove goroutine leak in IPNS Flush handler
lidel 5816dfa
fix(fuse): add mutex to IPNS file handle operations
lidel 3b663aa
refactor(fuse): remove dead File.Forget method
lidel 50c5a8e
fix(fuse): flush IPNS directory after Remove and Rename
lidel b261516
fix(fuse): inherit CID builder and flush on IPNS Create
lidel 3c9550c
test(fuse): add IPNS Remove and non-empty rmdir tests
lidel 55cfd7b
feat(fuse): read UnixFS mode/mtime, add StoreMtime/StoreMode config
lidel 6ba3437
feat(fuse): add ipfs.cid xattr to all mounts
lidel d334282
feat(fuse): switch from bazil.org/fuse to hanwen/go-fuse v2
lidel 78c71e2
fix(fuse): close fd on error in Open to prevent leak
lidel b7f1273
fix(fuse): detect external unmount via server.Wait
lidel db29899
fix(fuse): return actual error from Unlink/Rmdir, not ENOENT
lidel f3df205
fix(fuse): reuse DagReader per open, pass ctx to all reads
lidel fc849b5
chore(fuse): cleanup dead code, add var comments
lidel 944e7e8
chore(fuse): replace OSXFUSE 2.x check with macFUSE detection
lidel 8bc9536
fix(fuse): include mountpoint path in mount errors
lidel 9be4d04
chore(ci): remove bazil fusermount workaround
lidel 7095eca
docs: update v0.41 changelog for FUSE rewrite
lidel c54071d
Merge remote-tracking branch 'origin/master' into feat/consolidate-fu…
lidel c73d2cf
chore(deps): bump boxo for full FileDescriptor serialization
lidel c15b3a8
chore(deps): bump boxo to merged ipfs/boxo#1133
lidel 01c5669
feat(fuse): CAP_ATOMIC_O_TRUNC, new integration tests
lidel 438b296
fix(fuse): rename-over-existing, bump boxo for flushUp race fix
lidel 3435d87
fix(fuse): unskip VimSavePattern, bump boxo for setNodeData fix
lidel 7818e07
fix(fuse): build tags for cross-compilation
lidel ce529dd
fix(test): use fusermount3 in CLI FUSE tests
lidel 29b4e9c
feat(fuse): symlink support on writable mounts
lidel 77038ff
fix(fuse): checked type assertion in MFS Rename
lidel a353eac
fix(test): add missing continue in stress test
lidel ae40117
fix(fuse): return error from Readdir when DAG.Get fails
lidel 0e4fb22
docs: remove duplicate fsync bullet in changelog
lidel b8a0823
ci: clean up stale FUSE mounts in fuse-tests job
lidel c08936a
chore(deps): bump boxo to merged ipfs/boxo#1134
lidel 819016a
docs: add build tag comments, normalize tag style
lidel 41a4f22
fix(fuse): add Setattr to directories for chmod and mtime
lidel 245a3c1
docs: clarify directory support and spec link for StoreMtime/StoreMode
lidel 002f5bf
fix(fuse): use proper mode conversion, document 9-bit limit
lidel 05bdd59
feat(fuse): symlink Setattr with mtime persistence
lidel 09612e1
fix(fuse): return EIO instead of panicking on unknown node type
lidel a2182a4
docs: update FUSE docs for go-fuse migration
lidel 3844ba6
refactor(fuse): extract shared writable types and test suite
lidel a3c720f
feat(fuse): add macOS-specific mount options
lidel 6181682
fix(fuse): detect symlinks in readdir, fix stale refs
lidel f16a2f0
fix(fuse): normalize deprecated ipfs_cid xattr to ipfs.cid
lidel 4dfb855
fix(fuse): serialize concurrent reads on readonly file handles
lidel 939caf7
fix(fuse): bypass MFS locking for read-only opens
lidel 87b969e
fix(fuse): support truncate(path, size) without open fd
lidel 4f09f7b
ci(fuse): get stack traces on test hangs
lidel c5ef4ec
Merge remote-tracking branch 'origin/master' into feat/consolidate-fu…
lidel 0e05597
Merge remote-tracking branch 'origin/master' into feat/consolidate-fu…
lidel 930be4a
fix(fuse): fill attrs in FileInode.Setattr response
lidel 963d525
docs(config): clarify Mounts.IPNS writability scope
lidel dcf517c
fuse: review cleanup for go-fuse migration
lidel 95645a1
docs(config): list StoreMtime and StoreMode in Mounts TOC
lidel 70bdd7e
fix(fuse): fill EntryOut attrs in Dir.Create and Dir.Mkdir
lidel c05d46b
fix(fuse): map context cancellation to EINTR in read paths
lidel fffc2cc
test(fuse): add OExcl, DirRename, SparseWrite, FsyncCrossHandle
lidel fbbff08
test(fuse): cover external unmount on /ipns and /mfs
lidel 91d3d31
fix(commands): align 'ipfs mount' output columns
lidel 7410e6b
fix(fuse): invalidate kernel cache on Fsync
lidel 59f3f09
chore(gitignore): ignore test_fuse_unit and test_fuse_cli json output
lidel 0c79ec6
test(fuse): end-to-end coverage with real POSIX tools
lidel File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Systemd readiness notification (sd_notify). Linux only. | ||
| //go:build linux | ||
|
|
||
| package kubo | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // No-op readiness notification on non-Linux platforms. | ||
| //go:build !linux | ||
|
|
||
| package kubo | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Signal handling. Excluded from wasm where os.Signal is unavailable. | ||
| //go:build !wasm | ||
|
|
||
| package util | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // GUI detection stub. Windows has its own implementation. | ||
| //go:build !windows | ||
|
|
||
| package util | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // FreeBSD ulimit handling via sysctl. | ||
| //go:build freebsd | ||
|
|
||
| package util | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Ulimit tests. Skipped on windows and plan9 (no getrlimit). | ||
| //go:build !windows && !plan9 | ||
|
|
||
| package util | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Unix ulimit handling via getrlimit/setrlimit. | ||
| //go:build darwin || linux || netbsd || openbsd | ||
|
|
||
| package util | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Windows ulimit handling via SetHandleInformation. | ||
| //go:build windows | ||
|
|
||
| package util | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Excluded from plan9 (no fsnotify support). | ||
| //go:build !plan9 | ||
|
|
||
| package main | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Excluded from plan9 (no fsnotify support). | ||
| //go:build !plan9 | ||
|
|
||
| package main | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,39 @@ | ||
| package config | ||
|
|
||
| // Mounts stores the (string) mount points. | ||
| const ( | ||
| DefaultFuseAllowOther = false | ||
| DefaultStoreMtime = false | ||
| DefaultStoreMode = false | ||
| ) | ||
|
|
||
| // Mounts stores FUSE mount point configuration. | ||
| type Mounts struct { | ||
| IPFS string | ||
| IPNS string | ||
| MFS string | ||
| FuseAllowOther bool | ||
| // IPFS is the mountpoint for the read-only /ipfs/ namespace. | ||
| IPFS string | ||
|
|
||
| // IPNS is the mountpoint for the /ipns/ namespace. Directories backed | ||
| // by keys this node holds are writable; all other names resolve through | ||
| // IPNS to read-only symlinks into the /ipfs mount. | ||
| IPNS string | ||
|
|
||
| // MFS is the mountpoint for the Mutable File System (ipfs files API). | ||
| MFS string | ||
|
|
||
| // FuseAllowOther sets the FUSE allow_other mount option, letting | ||
| // users other than the mounter access the mounted filesystem. | ||
| FuseAllowOther Flag | ||
|
|
||
| // StoreMtime controls whether writable mounts (/ipns and /mfs) persist | ||
| // the current time as mtime in UnixFS metadata when creating a file or | ||
| // opening it for writing. This changes the resulting CID even when file | ||
| // content is identical. | ||
| // | ||
| // Reading mtime from UnixFS is always enabled on all mounts. | ||
| StoreMtime Flag | ||
|
|
||
| // StoreMode controls whether writable mounts (/ipns and /mfs) persist | ||
| // POSIX permission bits in UnixFS metadata when a chmod request is made. | ||
| // | ||
| // Reading mode from UnixFS is always enabled on all mounts. | ||
| StoreMode Flag | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Requires Go 1.25+ for testing/synctest. | ||
| //go:build go1.25 | ||
|
|
||
| package commands | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // File descriptor counting via /proc/self/fd (linux) or lsof (darwin). | ||
| //go:build linux || darwin | ||
|
|
||
| package fd | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // File descriptor counting via Windows Handle API. | ||
| //go:build windows | ||
|
|
||
| package fd | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,3 +1,4 @@ | ||
| // Only built when collecting coverage via "go test -tags testrunmain". | ||
| //go:build testrunmain | ||
|
|
||
| package main | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What are we trying to achieve here? A comment would be welcome
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
good idea, documented these in 819016a