Add an inode map data structure to track the location of inodes in logs.
[bluesky.git] / bluesky / serialize.c
index da9aa97..bee9122 100644 (file)
@@ -99,9 +99,7 @@ BlueSkyCloudLog *bluesky_serialize_inode(BlueSkyInode *inode)
         g_string_append_len(out, (gchar *)&size, sizeof(uint64_t));
         for (int i = 0; i < inode->blocks->len; i++) {
             BlueSkyBlock *b = &g_array_index(inode->blocks, BlueSkyBlock, i);
-            BlueSkyCloudLog *ref = NULL;
-            if (b->type == BLUESKY_BLOCK_REF)
-                ref = b->ref;
+            BlueSkyCloudLog *ref = (b->type == BLUESKY_BLOCK_REF ? b->ref : NULL);
             bluesky_cloudlog_ref(ref);
             g_array_append_val(cloudlog->links, ref);
         }
@@ -147,6 +145,7 @@ BlueSkyCloudLog *bluesky_serialize_inode(BlueSkyInode *inode)
 
     cloudlog->data = bluesky_string_new_from_gstring(out);
     bluesky_cloudlog_insert(cloudlog);
+    bluesky_cloudlog_stats_update(cloudlog, 1);
 
     return cloudlog;
 }