Add in header fields for per-object encryption/authentication.
[bluesky.git] / bluesky / bluesky-private.h
index e1313c5..87237cc 100644 (file)
@@ -187,6 +187,11 @@ typedef enum {
     LOGTYPE_INODE = 2,
     LOGTYPE_INODE_MAP = 3,
     LOGTYPE_CHECKPOINT = 4,
+
+    /* Used only as metadata in the local journal, not loaded as a
+     * BlueSkyCloudLogState nor stored in the cloud */
+    LOGTYPE_JOURNAL_MARKER = 16,
+    LOGTYPE_JOURNAL_CHECKPOINT = 17,
 } BlueSkyCloudLogType;
 
 /* Headers that go on items in local log segments and cloud log segments. */
@@ -208,8 +213,11 @@ struct log_footer {
 
 struct cloudlog_header {
     char magic[4];
+    uint8_t crypt_auth[CRYPTO_HASH_SIZE];
+    uint8_t crypt_iv[CRYPTO_BLOCK_SIZE];
     uint8_t type;
     BlueSkyCloudID id;
+    uint64_t inum;
     uint32_t size1, size2, size3;
 } __attribute__((packed));
 
@@ -343,6 +351,9 @@ struct _BlueSkyCacheFile {
 BlueSkyLog *bluesky_log_new(const char *log_directory);
 void bluesky_log_item_submit(BlueSkyCloudLog *item, BlueSkyLog *log);
 void bluesky_log_finish_all(GList *log_items);
+BlueSkyCloudLog *bluesky_log_get_commit_point(BlueSkyFS *fs);
+void bluesky_log_write_commit_point(BlueSkyFS *fs, BlueSkyCloudLog *marker);
+
 BlueSkyRCStr *bluesky_log_map_object(BlueSkyFS *fs, int log_dir, int log_seq,
                                      int log_offset, int log_size);
 void bluesky_mmap_unref(BlueSkyCacheFile *mmap);