Basic filesystem journaling.
[bluesky.git] / bluesky / inode.c
index 5977955..a0b3c6a 100644 (file)
@@ -106,6 +106,7 @@ BlueSkyFS *bluesky_init_fs(gchar *name, BlueSkyStore *store)
     g_print("Initializing fresh filesystem\n");
     BlueSkyFS *fs = bluesky_new_fs(name);
     fs->store = store;
+    fs->log = bluesky_log_new("journal");
 
     BlueSkyInode *root = bluesky_new_inode(BLUESKY_ROOT_INUM, fs,
                                            BLUESKY_DIRECTORY);
@@ -308,6 +309,13 @@ void bluesky_inode_start_sync(BlueSkyInode *inode, BlueSkyStoreAsync *barrier)
     char key[64];
     sprintf(key, "inode-%016"PRIx64, inode->inum);
 
+    BlueSkyLogItem *log_item = bluesky_log_item_new();
+    log_item->key = g_strdup(key);
+    log_item->data = data;
+    bluesky_string_ref(data);
+    bluesky_log_item_submit(log_item, fs->log);
+    bluesky_log_item_finish(log_item);
+
     BlueSkyStoreAsync *async = bluesky_store_async_new(fs->store);
     async->op = STORE_OP_PUT;
     async->key = g_strdup(key);