In-progress work to implement inode map loading at server start.
[bluesky.git] / bluesky / bluesky-private.h
index f1f8ffc..e1313c5 100644 (file)
@@ -49,6 +49,10 @@ BlueSkyFS *bluesky_deserialize_superblock(const gchar *buf);
 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,
@@ -127,11 +131,16 @@ typedef struct {
 
     /* 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);
@@ -178,7 +187,6 @@ typedef enum {
     LOGTYPE_INODE = 2,
     LOGTYPE_INODE_MAP = 3,
     LOGTYPE_CHECKPOINT = 4,
-    LOGTYPE_CHECKPOINT_PTR = 5,
 } BlueSkyCloudLogType;
 
 /* Headers that go on items in local log segments and cloud log segments. */
@@ -392,6 +400,8 @@ InodeMapEntry *bluesky_inode_map_lookup(GSequence *inode_map, uint64_t inum,
                                         int action);
 BlueSkyCloudLog *bluesky_inode_map_serialize(BlueSkyFS *fs);
 
+gboolean bluesky_checkpoint_load(BlueSkyFS *fs);
+
 #ifdef __cplusplus
 }
 #endif