From 2546446d51bd42bf13ce4d17926742545813dc51 Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Sun, 5 Nov 2023 10:53:42 +0200 Subject: feat(tvix/castore): bump [Directory,File]Node size to u64 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 Tested-by: BuildkiteCI --- tvix/store/src/fs/inode_tracker.rs | 4 ++-- tvix/store/src/fs/inodes.rs | 4 ++-- tvix/store/src/fs/tests.rs | 8 ++++---- tvix/store/src/nar/renderer.rs | 2 +- tvix/store/src/tests/nar_renderer.rs | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) (limited to 'tvix/store') 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, -- cgit 1.4.1