-
Notifications
You must be signed in to change notification settings - Fork 67
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
feat: implement fuse-t feature #144
Conversation
d735bfa
to
9806669
Compare
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.
Now that we have a third fuse session implementation, IMHO we should define a trait for all of them. But we can do it later on.
@@ -51,6 +51,7 @@ async-io = ["async-trait", "tokio-uring", "tokio/fs", "tokio/net", "tokio/sync", | |||
fusedev = ["vmm-sys-util", "caps", "core-foundation-sys"] | |||
virtiofs = ["virtio-queue", "caps", "vmm-sys-util"] | |||
vhost-user-fs = ["virtiofs", "vhost", "caps"] | |||
fuse-t=[] |
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.
should be a feature only available on macos?
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.
Yes, but features not support [target.'cfg(target_os = "macos")'.features]
?
tests/macfuse_smoke.rs
Outdated
@@ -53,7 +53,7 @@ mod macfuse_tests { | |||
} | |||
|
|||
#[test] | |||
#[ignore] // it depends on privileged mode to pass through /dev/fuse | |||
#[cfg(feature = "fuse-t")] // it depends on privileged mode to pass through /dev/fuse |
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.
we use --ignore
to test with privilege mode.
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.
This case only run macos, has no --ignore
run.
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.
macfuse can not get privilege, becase it must click in System Setting
.
const FUSE_HEADER_SIZE: usize = 0x1000; | ||
const FS_SND_SIZE: usize = 4 * 1024 * 1024; | ||
|
||
const FUSE_NFSSRV_PATH: &str = "/usr/local/bin/go-nfsv4"; |
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.
Is the binary installed by default? I don't see it getting installed in the test setup.
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.
Install by this script
wget https://github.com/macos-fuse-t/fuse-t/releases/download/1.0.24/fuse-t-macos-installer-1.0.24.pkg
sudo installer -pkg fuse-t-macos-installer-1.0.24.pkg -target /
There are a few warnings:
Not sure why CI didn't catch it. Otherwise lgtm! |
Use fuse-t to replace MacFUSE as the implementation of FUSE. fuse-t is based on NFS and does not require the use of kernel extensions. Installation can be done with lower privileges and it does not impact system stability. Signed-off-by: killagu <[email protected]>
Add |
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.
lgtm, thanks!
Use fuse-t to replace MacFUSE as the implementation of FUSE. fuse-t is based on NFS and does not require the use of kernel extensions. Installation can be done with lower privileges and it does not impact system stability.