diff options
author | Florian Klink <flokli@flokli.de> | 2023-12-16T21·01+0200 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-12-16T21·46+0000 |
commit | 97dee277b06570cfd9cc661e2e900dcc7ad2ede8 (patch) | |
tree | 428610ca81ad027517edeca2ddba89a5e5c026ae /tvix/store/src/fs/mod.rs | |
parent | 6815572274c1e61b19bd386d52030e09289a511c (diff) |
refactor(tvix/store/fs): no explicitly required Arc'ed Blob/DirSvc r/7223
Change-Id: Ie55026668cd4a6117e7b07174f5ac6638f93d194 Reviewed-on: https://cl.tvl.fyi/c/depot/+/10374 Tested-by: BuildkiteCI Autosubmit: flokli <flokli@flokli.de> Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Diffstat (limited to 'tvix/store/src/fs/mod.rs')
-rw-r--r-- | tvix/store/src/fs/mod.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/tvix/store/src/fs/mod.rs b/tvix/store/src/fs/mod.rs index cb2d2154e78d..fbd1cb6fc5e1 100644 --- a/tvix/store/src/fs/mod.rs +++ b/tvix/store/src/fs/mod.rs @@ -16,6 +16,7 @@ use fuse_backend_rs::abi::fuse_abi::stat64; use fuse_backend_rs::api::filesystem::{Context, FileSystem, FsOptions, ROOT_ID}; use futures::StreamExt; use parking_lot::RwLock; +use std::ops::Deref; use std::{ collections::HashMap, io, @@ -72,9 +73,9 @@ use self::{ /// Due to the above being valid across the whole store, and considering the /// merkle structure is a DAG, not a tree, this also means we can't do "bucketed /// allocation", aka reserve Directory.size inodes for each PathInfo. -pub struct TvixStoreFs<RN> { - blob_service: Arc<dyn BlobService>, - directory_service: Arc<dyn DirectoryService>, +pub struct TvixStoreFs<BS, DS, RN> { + blob_service: BS, + directory_service: DS, root_nodes_provider: RN, /// Whether to (try) listing elements in the root. @@ -95,13 +96,15 @@ pub struct TvixStoreFs<RN> { tokio_handle: tokio::runtime::Handle, } -impl<RN> TvixStoreFs<RN> +impl<BS, DS, RN> TvixStoreFs<BS, DS, RN> where + BS: Deref<Target = dyn BlobService> + Clone + Send, + DS: Deref<Target = dyn DirectoryService> + Clone + Send + 'static, RN: RootNodes + Clone + 'static, { pub fn new( - blob_service: Arc<dyn BlobService>, - directory_service: Arc<dyn DirectoryService>, + blob_service: BS, + directory_service: DS, root_nodes_provider: RN, list_root: bool, ) -> Self { @@ -262,8 +265,10 @@ where } } -impl<RN> FileSystem for TvixStoreFs<RN> +impl<BS, DS, RN> FileSystem for TvixStoreFs<BS, DS, RN> where + BS: Deref<Target = dyn BlobService> + Clone + Send + 'static, + DS: Deref<Target = dyn DirectoryService> + Send + Clone + 'static, RN: RootNodes + Clone + 'static, { type Handle = u64; |