diff options
author | Florian Klink <flokli@flokli.de> | 2023-11-05T08·53+0200 |
---|---|---|
committer | flokli <flokli@flokli.de> | 2023-11-05T10·57+0000 |
commit | 2546446d51bd42bf13ce4d17926742545813dc51 (patch) | |
tree | 3634fc7babfce3aca559d0d46194fcc2b9c03a09 /tvix/castore/src/proto/mod.rs | |
parent | 47e34b2c36b24145d7141468a510e18f991ed175 (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/castore/src/proto/mod.rs')
-rw-r--r-- | tvix/castore/src/proto/mod.rs | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/tvix/castore/src/proto/mod.rs b/tvix/castore/src/proto/mod.rs index 07892ab79905..c734e8be89ec 100644 --- a/tvix/castore/src/proto/mod.rs +++ b/tvix/castore/src/proto/mod.rs @@ -172,23 +172,23 @@ fn insert_once<'n>( Ok(()) } -fn checked_sum(iter: impl IntoIterator<Item = u32>) -> Option<u32> { - iter.into_iter().try_fold(0u32, |acc, i| acc.checked_add(i)) +fn checked_sum(iter: impl IntoIterator<Item = u64>) -> Option<u64> { + iter.into_iter().try_fold(0u64, |acc, i| acc.checked_add(i)) } impl Directory { /// The size of a directory is the number of all regular and symlink elements, /// the number of directory elements, and their size fields. - pub fn size(&self) -> u32 { + pub fn size(&self) -> u64 { if cfg!(debug_assertions) { self.size_checked() - .expect("Directory::size exceeds u32::MAX") + .expect("Directory::size exceeds u64::MAX") } else { - self.size_checked().unwrap_or(u32::MAX) + self.size_checked().unwrap_or(u64::MAX) } } - fn size_checked(&self) -> Option<u32> { + fn size_checked(&self) -> Option<u64> { checked_sum([ self.files.len().try_into().ok()?, self.symlinks.len().try_into().ok()?, |