Fixes for journal replay, and drop the "superblock" cloud item.
[bluesky.git] / bluesky / log.c
index c94794c..c879ccd 100644 (file)
@@ -761,6 +761,16 @@ static void bluesky_replay_scan_journal2(BlueSkyFS *fs, GList **objects,
             if (!bluesky_deserialize_inode(inode, log_item))
                 g_print("Error deserializing inode %"PRIu64"\n", inum);
             fs->next_inum = MAX(fs->next_inum, inum + 1);
+            bluesky_list_unlink(&fs->accessed_list, inode->accessed_list);
+            inode->accessed_list = bluesky_list_prepend(&fs->accessed_list, inode);
+            bluesky_list_unlink(&fs->dirty_list, inode->dirty_list);
+            inode->dirty_list = bluesky_list_prepend(&fs->dirty_list, inode);
+            bluesky_list_unlink(&fs->unlogged_list, inode->unlogged_list);
+            inode->unlogged_list = NULL;
+            inode->change_cloud = inode->change_commit;
+            bluesky_cloudlog_ref(log_item);
+            bluesky_cloudlog_unref(inode->committed_item);
+            inode->committed_item = log_item;
             g_mutex_unlock(inode->lock);
             g_mutex_unlock(fs->lock);
         }