+BlueSkyCloudLog *bluesky_log_get_commit_point(BlueSkyFS *fs);
+void bluesky_log_write_commit_point(BlueSkyFS *fs, BlueSkyCloudLog *marker);
+
+BlueSkyRCStr *bluesky_cachefile_map_raw(BlueSkyCacheFile *cachefile,
+ off_t offset, size_t size);
+BlueSkyRCStr *bluesky_log_map_object(BlueSkyCloudLog *item, gboolean map_data);
+void bluesky_mmap_unref(BlueSkyCacheFile *mmap);
+void bluesky_cachefile_unref(BlueSkyCacheFile *cachefile);
+
+BlueSkyCacheFile *bluesky_cachefile_lookup(BlueSkyFS *fs,
+ int clouddir, int log_seq,
+ gboolean start_fetch);
+void bluesky_cachefile_gc(BlueSkyFS *fs);
+
+void bluesky_replay(BlueSkyFS *fs);
+
+/* Used to track log segments that are being written to the cloud. */
+typedef struct {
+ BlueSkyFS *fs;
+ char *key; /* File name for log segment in backend */
+ GString *raw_data; /* Data before encryption */
+ BlueSkyRCStr *data; /* Data after encryption */
+ GSList *items;
+ GMutex *lock;
+ GCond *cond;
+ gboolean complete;
+} SerializedRecord;
+
+/***** Inode map management *****/
+
+/* Mapping information for a single inode number. These are grouped together
+ * into InodeMapRange objects. */
+typedef struct {
+ uint64_t inum;
+
+ /* A pointer to the cloud log entry for this inode. This may or may not
+ * actually have data loaded (it might just contain pointers to the data
+ * location, and in fact this will likely often be the case). */
+ BlueSkyCloudLog *item;
+} InodeMapEntry;
+
+typedef struct {
+ /* Starting and ending inode number values that fall in this section.
+ * Endpoint values are inclusive. */
+ uint64_t start, end;
+
+ /* A sorted list (by inode number) of InodeMapEntry objects. */
+ GSequence *map_entries;
+
+ /* The serialized version of the inode map data. */
+ BlueSkyCloudLog *serialized;
+
+ /* Have there been changes that require writing this section out again? */
+ gboolean dirty;
+} InodeMapRange;
+
+InodeMapEntry *bluesky_inode_map_lookup(GSequence *inode_map, uint64_t inum,
+ int action);
+BlueSkyCloudLog *bluesky_inode_map_serialize(BlueSkyFS *fs);
+void bluesky_inode_map_minimize(BlueSkyFS *fs);
+
+gboolean bluesky_checkpoint_load(BlueSkyFS *fs);
+
+/* Merging of log state with the work of the cleaner. */
+void bluesky_cleaner_merge(BlueSkyFS *fs);
+void bluesky_cleaner_thread_launch(BlueSkyFS *fs);