about summary refs log tree commit diff
path: root/tvix/store/src/fuse
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-07-19T15·52+0300
committerclbot <clbot@tvl.fyi>2023-07-22T09·03+0000
commit432222f098bfceb033e63e9a63687e35574457f9 (patch)
tree43a5e38cf79827dd63aa2adbd841da6aa62cf1de /tvix/store/src/fuse
parent7971d7d9ff42ed00f6f70121f372dd744f45915b (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.rs4
-rw-r--r--tvix/store/src/fuse/inodes.rs2
-rw-r--r--tvix/store/src/fuse/tests.rs12
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(),
             })),
         }),