Drop some debugging messages.
[bluesky.git] / bluesky / inode.c
index cab49a6..a264f35 100644 (file)
@@ -12,7 +12,7 @@
 #include <glib.h>
 #include <string.h>
 
-#include "bluesky.h"
+#include "bluesky-private.h"
 
 /* Core filesystem.  Different proxies, such as the NFSv3 one, interface to
  * this, but the core actually tracks the data which is stored.  So far we just
@@ -37,6 +37,9 @@ void bluesky_inode_update_ctime(BlueSkyInode *inode, gboolean update_mtime)
     inode->ctime = now;
     if (update_mtime)
         inode->mtime = now;
+
+    if (inode->change_time == 0)
+        inode->change_time = now;
 }
 
 /* Unfortunately a glib hash table is only guaranteed to be able to store
@@ -170,6 +173,10 @@ BlueSkyInode *bluesky_get_inode(BlueSkyFS *fs, uint64_t inum)
 {
     BlueSkyInode *inode = NULL;
 
+    if (inum == 0) {
+        return NULL;
+    }
+
     g_mutex_lock(fs->lock);
     inode = (BlueSkyInode *)g_hash_table_lookup(fs->inodes, &inum);
 
@@ -198,14 +205,17 @@ void bluesky_inode_flush(BlueSkyFS *fs, BlueSkyInode *inode)
 {
     GString *buf = g_string_new("");
     bluesky_serialize_inode(buf, inode);
-
-    gsize len = buf->len;
-    BlueSkyRCStr *data = bluesky_string_new(g_string_free(buf, FALSE), len);
+    BlueSkyRCStr *data = bluesky_string_new_from_gstring(buf);
 
     char key[64];
     sprintf(key, "inode-%016"PRIx64, inode->inum);
 
-    bluesky_store_put(fs->store, key, data);
+    BlueSkyStoreAsync *async = bluesky_store_async_new(fs->store);
+    async->op = STORE_OP_PUT;
+    async->key = g_strdup(key);
+    async->data = data;
+    bluesky_store_async_submit(async);
+    bluesky_store_async_unref(async);
 }
 
 /* Fetch an inode from stable storage. */
@@ -228,11 +238,14 @@ void bluesky_superblock_flush(BlueSkyFS *fs)
 {
     GString *buf = g_string_new("");
     bluesky_serialize_superblock(buf, fs);
+    BlueSkyRCStr *data = bluesky_string_new_from_gstring(buf);
 
-    g_print("Syncing superblock...\n");
+    BlueSkyStoreAsync *async = bluesky_store_async_new(fs->store);
+    async->op = STORE_OP_PUT;
+    async->key = g_strdup("superblock");
+    async->data = data;
+    bluesky_store_async_submit(async);
+    bluesky_store_async_unref(async);
 
-    gsize len = buf->len;
-    BlueSkyRCStr *data = bluesky_string_new(g_string_free(buf, FALSE), len);
-    bluesky_store_put(fs->store, "superblock", data);
+    bluesky_store_sync(fs->store);
 }
-