BlueSkyCloudLog *bluesky_serialize_inode(BlueSkyInode *inode);
gboolean bluesky_deserialize_inode(BlueSkyInode *inode, BlueSkyCloudLog *item);
+void bluesky_deserialize_cloudlog(BlueSkyCloudLog *item,
+ const char *data,
+ size_t len);
+
void bluesky_serialize_cloudlog(BlueSkyCloudLog *log,
GString *encrypted,
GString *authenticated,
/* Clean up any implementation-private data in a BlueSkyStoreAsync. */
void (*cleanup)(gpointer store, BlueSkyStoreAsync *async);
+
+ /* Find the lexicographically-largest file starting with the specified
+ * prefix. */
+ char * (*lookup_last)(gpointer store, const gchar *prefix);
} BlueSkyStoreImplementation;
void bluesky_store_register(const BlueSkyStoreImplementation *impl,
const gchar *name);
+char *bluesky_store_lookup_last(BlueSkyStore *store, const char *prefix);
BlueSkyStoreAsync *bluesky_store_async_new(BlueSkyStore *store);
gpointer bluesky_store_async_get_handle(BlueSkyStoreAsync *async);
void bluesky_store_async_ref(BlueSkyStoreAsync *async);
LOGTYPE_INODE = 2,
LOGTYPE_INODE_MAP = 3,
LOGTYPE_CHECKPOINT = 4,
- LOGTYPE_CHECKPOINT_PTR = 5,
+
+ /* 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. */
char magic[4];
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);
int action);
BlueSkyCloudLog *bluesky_inode_map_serialize(BlueSkyFS *fs);
+gboolean bluesky_checkpoint_load(BlueSkyFS *fs);
+
#ifdef __cplusplus
}
#endif