aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorevuez <julien@mulga.net>2024-04-03 22:43:16 +0200
committerevuez <julien@mulga.net>2024-04-03 22:43:16 +0200
commitdae12d2d88be218401acbe5d311694d524edd671 (patch)
treeb447f016445fdc1ba958b2567ce90c20d748ee59
parent43e1a12b5bce11b4a28a53acca243e35c2be6d3e (diff)
downloadcarton-dae12d2d88be218401acbe5d311694d524edd671.tar.gz
Add some details to READMEHEADmain
-rw-r--r--README.md12
1 files changed, 11 insertions, 1 deletions
diff --git a/README.md b/README.md
index 7e85092..04d827b 100644
--- a/README.md
+++ b/README.md
@@ -2,4 +2,14 @@
A content-addressable storage system, with a fuse-based VFS client.
-This is very much a work in progress. The fuse-based VFS client in `src/client/fs.rs` is being rewritten to handle large files. Every file update needed to first load the entire file to memory before flushing it to the CAS. The goal now is to first copy the file out of the CAS, update it, then rewrite it to the CAS.
+This is very much a work in progress.
+The fuse-based VFS client in `src/client/fs.rs` is being rewritten to handle large files. Every file update needed to first load the entire file to memory before flushing it to the CAS. The goal now is to first copy the file out of the CAS, update it, then rewrite it to the CAS.
+
+`carton` splits files using a content-defined chunking algorithm (FastCDC). These chunks of data are refered to as _plain objects_. Groups of plain objects can be retrieved or updated as a single file thanks to _patches_ and _anchors_.
+
+Plain objects, patches and anchors are all content-addressable and immutable.
+
+On creation, each file gets an anchor, which is just a unique random blob of data. Patches are then created to define the anchor:
+
+- List which chunks are linked to the anchor, and in what order they were created,
+- Assign attributes to the anchor, such as name, size, mime type, ...