about summary refs log tree commit diff
path: root/tvix/store/src/fs
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/fs
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/fs')
-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
3 files changed, 8 insertions, 8 deletions
diff --git a/tvix/store/src/fs/inode_tracker.rs b/tvix/store/src/fs/inode_tracker.rs
index daf6b4ee79..181d68f06c 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 928f510590..ed75a1bc78 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 2adea0ceb3..25a3df1df1 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,
             })),
         }),