- BlueSkyRCStr *data = block->data;
-
- GChecksum *csum = g_checksum_new(G_CHECKSUM_SHA256);
- g_checksum_update(csum, (const guchar *)data->data, data->len);
- gchar *name = g_strdup(g_checksum_get_string(csum));
-
- /* Start commit to the local log. */
- BlueSkyLogItem *log_item = bluesky_log_item_new();
- log_item->key = g_strdup(name);
- log_item->data = data;
- bluesky_string_ref(data);
- bluesky_log_item_submit(log_item, fs->log);
- *log_items = g_list_prepend(*log_items, log_item);
-
- /* 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);
- if (barrier != NULL)
- bluesky_store_add_barrier(barrier, async);
- bluesky_store_async_unref(async);
-
- g_free(block->ref);
- block->ref = name;
-
- block->type = BLUESKY_BLOCK_CACHED;
- g_atomic_int_add(&fs->cache_dirty, -1);