diff options
author | Brian Olsen <brian@maven-group.org> | 2023-09-29T16·50+0200 |
---|---|---|
committer | Brian Olsen <me@griff.name> | 2023-10-02T15·46+0000 |
commit | cfb810d81a4f5ba60e8d3c5502390d60799aa636 (patch) | |
tree | 0c3ddac2a5ee38151db245475d0159c09b6028cb /tvix/store/src/fs/mod.rs | |
parent | 5c2cad0ac48d7f223fe76b27d3d7ea9d38529e25 (diff) |
fix(tvix/store): Fix FUSE support on MacOS r/6687
This partially fixes b/312 and gets FUSE to work again on MacOS. It is mostly small type changes and an update to fuse-backend-rs because upstream currently doesn't work with MacFuse. It also sets the default FUSE thread count on MacOS to 1 because otherwise the mount command will hang when shutting down as only one thread gets ENODEV and all the others just keep blocking. Change-Id: Ifb3c4268caf296c487049c1dc4618acb32497f44 Reviewed-on: https://cl.tvl.fyi/c/depot/+/9490 Tested-by: BuildkiteCI Reviewed-by: Connor Brewster <cbrewster@hey.com> Reviewed-by: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/store/src/fs/mod.rs')
-rw-r--r-- | tvix/store/src/fs/mod.rs | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/tvix/store/src/fs/mod.rs b/tvix/store/src/fs/mod.rs index 91adfa35f0e0..1333983460ea 100644 --- a/tvix/store/src/fs/mod.rs +++ b/tvix/store/src/fs/mod.rs @@ -13,6 +13,7 @@ mod tests; use crate::pathinfoservice::PathInfoService; +use fuse_backend_rs::abi::fuse_abi::stat64; use fuse_backend_rs::api::filesystem::{Context, FileSystem, FsOptions, ROOT_ID}; use futures::StreamExt; use nix_compat::store_path::StorePath; @@ -253,7 +254,7 @@ impl FileSystem for TvixStoreFs { _ctx: &Context, inode: Self::Inode, _handle: Option<Self::Handle>, - ) -> io::Result<(libc::stat64, Duration)> { + ) -> io::Result<(stat64, Duration)> { if inode == ROOT_ID { return Ok((ROOT_FILE_ATTR.into(), Duration::MAX)); } @@ -441,7 +442,7 @@ impl FileSystem for TvixStoreFs { let written = add_entry(fuse_backend_rs::api::filesystem::DirEntry { ino, offset: offset + i as u64 + 1, - type_: ty, + type_: ty as u32, name: store_path.to_string().as_bytes(), })?; // If the buffer is full, add_entry will return `Ok(0)`. @@ -490,9 +491,9 @@ impl FileSystem for TvixStoreFs { ino: *ino, offset: offset + i as u64 + 1, type_: match child_node { - Node::Directory(_) => libc::S_IFDIR, - Node::File(_) => libc::S_IFREG, - Node::Symlink(_) => libc::S_IFLNK, + Node::Directory(_) => libc::S_IFDIR as u32, + Node::File(_) => libc::S_IFREG as u32, + Node::Symlink(_) => libc::S_IFLNK as u32, }, name: child_node.get_name(), })?; |