about summary refs log tree commit diff
path: root/tvix/store/src
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-11-05T08·53+0200
committerflokli <flokli@flokli.de>2023-11-05T10·57+0000
commit2546446d51bd42bf13ce4d17926742545813dc51 (patch)
tree3634fc7babfce3aca559d0d46194fcc2b9c03a09 /tvix/store/src
parent47e34b2c36b24145d7141468a510e18f991ed175 (diff)
feat(tvix/castore): bump [Directory,File]Node size to u64 r/6946
Having more than 4GiB files is quite possible (think about the NixOS
graphical installer, and an uncompressed iso of it).

No wire format changes.

Change-Id: Ia78a07e4c554e91b93c5b9f8533266e4bd7f22b6
Reviewed-on: https://cl.tvl.fyi/c/depot/+/9950
Reviewed-by: tazjin <tazjin@tvl.su>
Tested-by: BuildkiteCI
Diffstat (limited to 'tvix/store/src')
-rw-r--r--tvix/store/src/fs/inode_tracker.rs4
-rw-r--r--tvix/store/src/fs/inodes.rs4
-rw-r--r--tvix/store/src/fs/tests.rs8
-rw-r--r--tvix/store/src/nar/renderer.rs2
-rw-r--r--tvix/store/src/tests/nar_renderer.rs4
5 files changed, 11 insertions, 11 deletions
diff --git a/tvix/store/src/fs/inode_tracker.rs b/tvix/store/src/fs/inode_tracker.rs
index daf6b4ee79c2..181d68f06cb1 100644
--- a/tvix/store/src/fs/inode_tracker.rs
+++ b/tvix/store/src/fs/inode_tracker.rs
@@ -217,7 +217,7 @@ mod tests {
         let mut inode_tracker = InodeTracker::default();
         let f = InodeData::Regular(
             fixtures::BLOB_A_DIGEST.clone(),
-            fixtures::BLOB_A.len() as u32,
+            fixtures::BLOB_A.len() as u64,
             false,
         );
 
@@ -241,7 +241,7 @@ mod tests {
             ino,
             inode_tracker.put(InodeData::Regular(
                 fixtures::BLOB_B_DIGEST.clone(),
-                fixtures::BLOB_B.len() as u32,
+                fixtures::BLOB_B.len() as u64,
                 false,
             ))
         );
diff --git a/tvix/store/src/fs/inodes.rs b/tvix/store/src/fs/inodes.rs
index 928f51059002..ed75a1bc7832 100644
--- a/tvix/store/src/fs/inodes.rs
+++ b/tvix/store/src/fs/inodes.rs
@@ -5,7 +5,7 @@ use tvix_castore::B3Digest;
 
 #[derive(Clone, Debug)]
 pub enum InodeData {
-    Regular(B3Digest, u32, bool),  // digest, size, executable
+    Regular(B3Digest, u64, bool),  // digest, size, executable
     Symlink(bytes::Bytes),         // target
     Directory(DirectoryInodeData), // either [DirectoryInodeData:Sparse] or [DirectoryInodeData:Populated]
 }
@@ -16,7 +16,7 @@ pub enum InodeData {
 /// lookup and did fetch the data.
 #[derive(Clone, Debug)]
 pub enum DirectoryInodeData {
-    Sparse(B3Digest, u32),                                  // digest, size
+    Sparse(B3Digest, u64),                                  // digest, size
     Populated(B3Digest, Vec<(u64, castorepb::node::Node)>), // [(child_inode, node)]
 }
 
diff --git a/tvix/store/src/fs/tests.rs b/tvix/store/src/fs/tests.rs
index 2adea0ceb3a9..25a3df1df145 100644
--- a/tvix/store/src/fs/tests.rs
+++ b/tvix/store/src/fs/tests.rs
@@ -71,7 +71,7 @@ async fn populate_blob_a(
             node: Some(castorepb::node::Node::File(castorepb::FileNode {
                 name: BLOB_A_NAME.into(),
                 digest: fixtures::BLOB_A_DIGEST.clone().into(),
-                size: fixtures::BLOB_A.len() as u32,
+                size: fixtures::BLOB_A.len() as u64,
                 executable: false,
             })),
         }),
@@ -101,7 +101,7 @@ async fn populate_blob_b(
             node: Some(castorepb::node::Node::File(castorepb::FileNode {
                 name: BLOB_B_NAME.into(),
                 digest: fixtures::BLOB_B_DIGEST.clone().into(),
-                size: fixtures::BLOB_B.len() as u32,
+                size: fixtures::BLOB_B.len() as u64,
                 executable: false,
             })),
         }),
@@ -135,7 +135,7 @@ async fn populate_helloworld_blob(
             node: Some(castorepb::node::Node::File(castorepb::FileNode {
                 name: HELLOWORLD_BLOB_NAME.into(),
                 digest: fixtures::HELLOWORLD_BLOB_DIGEST.clone().into(),
-                size: fixtures::HELLOWORLD_BLOB_CONTENTS.len() as u32,
+                size: fixtures::HELLOWORLD_BLOB_CONTENTS.len() as u64,
                 executable: true,
             })),
         }),
@@ -262,7 +262,7 @@ async fn populate_blob_a_without_blob(
             node: Some(castorepb::node::Node::File(castorepb::FileNode {
                 name: BLOB_A_NAME.into(),
                 digest: fixtures::BLOB_A_DIGEST.clone().into(),
-                size: fixtures::BLOB_A.len() as u32,
+                size: fixtures::BLOB_A.len() as u64,
                 executable: false,
             })),
         }),
diff --git a/tvix/store/src/nar/renderer.rs b/tvix/store/src/nar/renderer.rs
index 2b7ad46f9ff7..2904f912fc14 100644
--- a/tvix/store/src/nar/renderer.rs
+++ b/tvix/store/src/nar/renderer.rs
@@ -136,7 +136,7 @@ async fn walk_node(
             nar_node
                 .file(
                     proto_file_node.executable,
-                    proto_file_node.size.into(),
+                    proto_file_node.size,
                     &mut blob_reader.compat(),
                 )
                 .await
diff --git a/tvix/store/src/tests/nar_renderer.rs b/tvix/store/src/tests/nar_renderer.rs
index f555099877dc..b57b58ec52dd 100644
--- a/tvix/store/src/tests/nar_renderer.rs
+++ b/tvix/store/src/tests/nar_renderer.rs
@@ -37,7 +37,7 @@ async fn single_file_missing_blob() {
         &castorepb::node::Node::File(FileNode {
             name: "doesntmatter".into(),
             digest: HELLOWORLD_BLOB_DIGEST.clone().into(),
-            size: HELLOWORLD_BLOB_CONTENTS.len() as u32,
+            size: HELLOWORLD_BLOB_CONTENTS.len() as u64,
             executable: false,
         }),
         // the blobservice is empty intentionally, to provoke the error.
@@ -150,7 +150,7 @@ async fn single_file() {
         &castorepb::node::Node::File(FileNode {
             name: "doesntmatter".into(),
             digest: HELLOWORLD_BLOB_DIGEST.clone().into(),
-            size: HELLOWORLD_BLOB_CONTENTS.len() as u32,
+            size: HELLOWORLD_BLOB_CONTENTS.len() as u64,
             executable: false,
         }),
         blob_service,