refactor(tvix/store/fs): Separate FUSE and filesystem code

In prepration for adding virtiofs support, I thought it would make sense
to split out the filesystem implementation from FUSE itself.

The `fs` module holds the tvix-store filesystem implemetation and the
`fuse` module holds the code to spawn a FUSE daemon backed by multiple
threads.

Change-Id: I8c58447b8c3aa016a613068f8e7ec166554e237c
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9343
Reviewed-by: flokli <flokli@flokli.de>
Tested-by: BuildkiteCI
Autosubmit: Connor Brewster <cbrewster@hey.com>
This commit is contained in:
Connor Brewster 2023-09-16 13:54:10 -05:00 committed by clbot
parent 6b7c936bc5
commit 7e737fde34
10 changed files with 141 additions and 133 deletions

View file

@ -22,7 +22,12 @@ use tvix_store::proto::GRPCPathInfoServiceWrapper;
use tvix_store::proto::NamedNode;
use tvix_store::proto::NarInfo;
use tvix_store::proto::PathInfo;
use tvix_store::{FuseDaemon, FUSE};
#[cfg(feature = "fs")]
use tvix_store::fs::TvixStoreFs;
#[cfg(feature = "fuse")]
use tvix_store::fs::fuse::FuseDaemon;
#[cfg(feature = "reflection")]
use tvix_store::proto::FILE_DESCRIPTOR_SET;
@ -302,7 +307,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
)?;
let mut fuse_daemon = tokio::task::spawn_blocking(move || {
let f = FUSE::new(
let f = TvixStoreFs::new(
blob_service,
directory_service,
path_info_service,