feat(tvix/castore): simple filesystem blob service

The simple filesystem `BlobService` enable a user to write blob store
on an existing filesystem using a prefix-style layout in the provided root directory,
e.g. the two first bytes of the blake3 hashes are used as directories prefixes.

Change-Id: I3451a688a6f39027b9c6517d853b95a87adb3a52
Reviewed-on: https://cl.tvl.fyi/c/depot/+/10071
Autosubmit: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
Reviewed-by: flokli <flokli@flokli.de>
This commit is contained in:
Ryan Lahfa 2023-12-17 01:22:01 +01:00 committed by clbot
parent 923a5737e6
commit 0ae32d45f6
6 changed files with 316 additions and 1 deletions

20
tvix/Cargo.lock generated
View file

@ -138,6 +138,16 @@ dependencies = [
"syn 2.0.39",
]
[[package]]
name = "async-tempfile"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b37d4bb113c47e4f263d4b0221912ff5aa840a51bc9b7b47b024e1cf1926fd9b"
dependencies = [
"tokio",
"uuid",
]
[[package]]
name = "async-trait"
version = "0.1.68"
@ -3093,6 +3103,7 @@ name = "tvix-castore"
version = "0.1.0"
dependencies = [
"async-stream",
"async-tempfile",
"blake3",
"bstr",
"bytes",
@ -3334,6 +3345,15 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a"
[[package]]
name = "uuid"
version = "1.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc"
dependencies = [
"getrandom",
]
[[package]]
name = "valuable"
version = "0.1.0"