summaryrefslogtreecommitdiff
path: root/src/libostree/ostree-repo-static-delta-private.h
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2015-01-29 01:03:55 -0500
committerColin Walters <walters@verbum.org>2015-02-16 10:10:35 -0500
commitd749932f6b00ebcf3f79100f1a9ad9f2a5f1fc98 (patch)
treee643021b9ee9df5bfd78fb8c0f184a7fb355980d /src/libostree/ostree-repo-static-delta-private.h
parent513d47a90cb076e6e73eb92053ed5d73d6d3dd16 (diff)
downloadostree-d749932f6b00ebcf3f79100f1a9ad9f2a5f1fc98.tar.gz
deltas: Rework format to allow streaming
There's still some silliness here, but there is now only one opcode open-splice-and-close, that writes a single chunk from the payload. This is really all we need for metadata, and small content objects are also fine with this. We get some deduplication between content objects by creating a dictionary for (uid,gid,mode) tuples and xattrs. This still keeps the operation/payload code in, so we could do rollsums in a future update easily.
Diffstat (limited to 'src/libostree/ostree-repo-static-delta-private.h')
-rw-r--r--src/libostree/ostree-repo-static-delta-private.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/libostree/ostree-repo-static-delta-private.h b/src/libostree/ostree-repo-static-delta-private.h
index 4c0f8c14..0661787f 100644
--- a/src/libostree/ostree-repo-static-delta-private.h
+++ b/src/libostree/ostree-repo-static-delta-private.h
@@ -34,10 +34,12 @@ G_BEGIN_DECLS
*
* y compression type (0: none, 'x': lzma)
* ---
- * ay data source
+ * a(uuu) modes
+ * aa(ayay) xattrs
+ * ay raw data source
* ay operations
*/
-#define OSTREE_STATIC_DELTA_PART_PAYLOAD_FORMAT_V0 "(ayay)"
+#define OSTREE_STATIC_DELTA_PART_PAYLOAD_FORMAT_V0 "(a(uuu)aa(ayay)ayay)"
/**
* OSTREE_STATIC_DELTA_META_ENTRY_FORMAT:
@@ -130,9 +132,10 @@ gboolean _ostree_static_delta_part_execute_finish (OstreeRepo *repo,
GError **error);
typedef enum {
- OSTREE_STATIC_DELTA_OP_WRITE = 1,
- OSTREE_STATIC_DELTA_OP_GUNZIP = 2,
- OSTREE_STATIC_DELTA_OP_CLOSE = 3
+ OSTREE_STATIC_DELTA_OP_OPEN_SPLICE_AND_CLOSE = 'S',
+ OSTREE_STATIC_DELTA_OP_OPEN = 'o',
+ OSTREE_STATIC_DELTA_OP_WRITE = 'w',
+ OSTREE_STATIC_DELTA_OP_CLOSE = 'c'
} OstreeStaticDeltaOpCode;
gboolean