- BlueSkyRCStr *data = block->data;
-
- GChecksum *csum = g_checksum_new(G_CHECKSUM_SHA256);
- g_checksum_update(csum, data->data, data->len);
- gchar *name = g_strdup(g_checksum_get_string(csum));
-
- /* Store the file data asynchronously, and don't bother waiting for a
- * response. */
- BlueSkyStoreAsync *async = bluesky_store_async_new(fs->store);
- async->op = STORE_OP_PUT;
- async->key = g_strdup(name);
- bluesky_string_ref(data);
- async->data = data;
- bluesky_store_async_submit(async);
- bluesky_store_async_unref(async);
-
- g_free(block->ref);
- block->ref = name;
-
- BlueSkyStoreAsync *barrier = bluesky_store_async_new(fs->store);
- barrier->op = STORE_OP_BARRIER;
- bluesky_store_add_barrier(barrier, async);
- bluesky_store_async_add_notifier(barrier, finished, NULL);
- bluesky_store_async_submit(barrier);
- bluesky_store_async_unref(barrier);
-
- /* block->type = BLUESKY_BLOCK_CACHED; */
- bluesky_string_unref(block->data);
- block->data = NULL;
- block->type = BLUESKY_BLOCK_REF;
+ g_assert(block->ref == NULL);
+
+ BlueSkyCloudLog *cloudlog = bluesky_cloudlog_new(fs, NULL);
+ cloudlog->type = LOGTYPE_DATA;
+ cloudlog->inum = inode->inum;
+ cloudlog->data = block->dirty; // String ownership is transferred
+ bluesky_cloudlog_stats_update(cloudlog, 1);
+ bluesky_cloudlog_sync(cloudlog);
+ bluesky_cloudlog_ref(cloudlog); // Reference for log_items list
+ *log_items = g_list_prepend(*log_items, cloudlog);
+ bluesky_cloudlog_insert(cloudlog);