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. */
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));
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);