+ state->data = g_string_new("");
+}
+
+void bluesky_cloudlog_write_log(BlueSkyFS *fs)
+{
+ BlueSkyCloudLogState *state = fs->log_state;
+ if (state->data == NULL)
+ state->data = g_string_new("");
+
+ g_mutex_lock(fs->lock);
+ g_hash_table_foreach(fs->locations, find_inodes, state);
+ g_mutex_unlock(fs->lock);
+
+ while (state->inode_list != NULL) {
+ BlueSkyCloudLog *log = (BlueSkyCloudLog *)state->inode_list->data;
+ bluesky_cloudlog_serialize(log, fs);
+ bluesky_cloudlog_unref(log);
+ state->inode_list = g_list_delete_link(state->inode_list,
+ state->inode_list);
+
+ if (state->data->len > CLOUDLOG_SEGMENT_SIZE)
+ bluesky_cloudlog_flush(fs);
+ }
+
+ bluesky_cloudlog_flush(fs);