- // FIXME: locking on the cloudlog?
- bluesky_block_fetch(inode, block, NULL);
- bluesky_string_ref(block->ref->data);
- block->dirty = bluesky_string_dup(block->ref->data);
+ if (preserve) {
+ // FIXME: locking on the cloudlog?
+ bluesky_block_fetch(inode, block, NULL);
+ bluesky_string_ref(block->ref->data);
+ block->dirty = bluesky_string_dup(block->ref->data);
+ } else {
+ block->dirty = bluesky_string_new(g_malloc0(block_len), block_len);
+ }