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;
+
+ /* The ID of the most recent version of the inode. */
+ BlueSkyCloudID id;
+
+ /* The location where that version is written in the cloud. */
+ BlueSkyCloudPointer location;
+
+ /* If the cloud log entry exists in memory, then a pointer to it, otherwise
+ * NULL. */
+ 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 location where this inode map section is stored in the cloud. */
+ BlueSkyCloudPointer location;
+
+ /* 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);
+
#ifdef __cplusplus
}
#endif