diff options
author | Florian Klink <flokli@flokli.de> | 2023-07-19T15·52+0300 |
---|---|---|
committer | clbot <clbot@tvl.fyi> | 2023-07-22T09·03+0000 |
commit | 432222f098bfceb033e63e9a63687e35574457f9 (patch) | |
tree | 43a5e38cf79827dd63aa2adbd841da6aa62cf1de /tvix/store/src/fuse | |
parent | 7971d7d9ff42ed00f6f70121f372dd744f45915b (diff) |
feat(tvix/store/proto): use Bytes instead of Vec<u8> r/6439
Makes use of https://github.com/tokio-rs/prost/pull/341, which makes our bytes field cheaper to clone. It's a bit annoying to configure due to https://github.com/hyperium/tonic/issues/908, but the workaround does get the job done. Change-Id: I25714600b041bb5432d3adf5859b151e72b12778 Reviewed-on: https://cl.tvl.fyi/c/depot/+/8975 Reviewed-by: raitobezarius <tvl@lahfa.xyz> Tested-by: BuildkiteCI Reviewed-by: tazjin <tazjin@tvl.su> Autosubmit: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/store/src/fuse')
-rw-r--r-- | tvix/store/src/fuse/inode_tracker.rs | 4 | ||||
-rw-r--r-- | tvix/store/src/fuse/inodes.rs | 2 | ||||
-rw-r--r-- | tvix/store/src/fuse/tests.rs | 12 |
3 files changed, 9 insertions, 9 deletions
diff --git a/tvix/store/src/fuse/inode_tracker.rs b/tvix/store/src/fuse/inode_tracker.rs index 8d91564712d0..67d9d9b9bf46 100644 --- a/tvix/store/src/fuse/inode_tracker.rs +++ b/tvix/store/src/fuse/inode_tracker.rs @@ -13,7 +13,7 @@ pub struct InodeTracker { blob_digest_to_inode: HashMap<B3Digest, u64>, // lookup table for symlinks by their target - symlink_target_to_inode: HashMap<Vec<u8>, u64>, + symlink_target_to_inode: HashMap<bytes::Bytes, u64>, // lookup table for directories by their B3Digest. // Note the corresponding directory may not be present in data yet. @@ -171,7 +171,7 @@ impl InodeTracker { self.blob_digest_to_inode.insert(digest.clone(), ino); } InodeData::Symlink(ref target) => { - self.symlink_target_to_inode.insert(target.to_vec(), ino); + self.symlink_target_to_inode.insert(target.clone(), ino); } InodeData::Directory(DirectoryInodeData::Sparse(ref digest, _size)) => { self.directory_digest_to_inode.insert(digest.clone(), ino); diff --git a/tvix/store/src/fuse/inodes.rs b/tvix/store/src/fuse/inodes.rs index a52ba7989e80..f44dde7b804f 100644 --- a/tvix/store/src/fuse/inodes.rs +++ b/tvix/store/src/fuse/inodes.rs @@ -5,7 +5,7 @@ use crate::{proto, B3Digest}; #[derive(Clone, Debug)] pub enum InodeData { Regular(B3Digest, u32, bool), // digest, size, executable - Symlink(Vec<u8>), // target + Symlink(bytes::Bytes), // target Directory(DirectoryInodeData), // either [DirectoryInodeData:Sparse] or [DirectoryInodeData:Populated] } diff --git a/tvix/store/src/fuse/tests.rs b/tvix/store/src/fuse/tests.rs index 8577e062e928..7d01902c6848 100644 --- a/tvix/store/src/fuse/tests.rs +++ b/tvix/store/src/fuse/tests.rs @@ -58,7 +58,7 @@ fn populate_blob_a( node: Some(proto::Node { node: Some(proto::node::Node::File(FileNode { name: BLOB_A_NAME.into(), - digest: fixtures::BLOB_A_DIGEST.to_vec(), + digest: fixtures::BLOB_A_DIGEST.clone().into(), size: fixtures::BLOB_A.len() as u32, executable: false, })), @@ -84,7 +84,7 @@ fn populate_blob_b( node: Some(proto::Node { node: Some(proto::node::Node::File(FileNode { name: BLOB_B_NAME.into(), - digest: fixtures::BLOB_B_DIGEST.to_vec(), + digest: fixtures::BLOB_B_DIGEST.clone().into(), size: fixtures::BLOB_B.len() as u32, executable: false, })), @@ -154,7 +154,7 @@ fn populate_directory_with_keep( node: Some(proto::Node { node: Some(proto::node::Node::Directory(DirectoryNode { name: DIRECTORY_WITH_KEEP_NAME.into(), - digest: fixtures::DIRECTORY_WITH_KEEP.digest().to_vec(), + digest: fixtures::DIRECTORY_WITH_KEEP.digest().into(), size: fixtures::DIRECTORY_WITH_KEEP.size(), })), }), @@ -175,7 +175,7 @@ fn populate_pathinfo_without_directory( node: Some(proto::Node { node: Some(proto::node::Node::Directory(DirectoryNode { name: DIRECTORY_WITH_KEEP_NAME.into(), - digest: fixtures::DIRECTORY_WITH_KEEP.digest().to_vec(), + digest: fixtures::DIRECTORY_WITH_KEEP.digest().into(), size: fixtures::DIRECTORY_WITH_KEEP.size(), })), }), @@ -195,7 +195,7 @@ fn populate_blob_a_without_blob( node: Some(proto::Node { node: Some(proto::node::Node::File(FileNode { name: BLOB_A_NAME.into(), - digest: fixtures::BLOB_A_DIGEST.to_vec(), + digest: fixtures::BLOB_A_DIGEST.clone().into(), size: fixtures::BLOB_A.len() as u32, executable: false, })), @@ -232,7 +232,7 @@ fn populate_directory_complicated( node: Some(proto::Node { node: Some(proto::node::Node::Directory(DirectoryNode { name: DIRECTORY_COMPLICATED_NAME.into(), - digest: fixtures::DIRECTORY_COMPLICATED.digest().to_vec(), + digest: fixtures::DIRECTORY_COMPLICATED.digest().into(), size: fixtures::DIRECTORY_COMPLICATED.size(), })), }), |