X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;ds=sidebyside;f=inode.c;fp=inode.c;h=b1071a63cbd6b5b4222916ad2babf27bb67b2fc4;hb=3ebe1efb5570c4a678774ebdf33b36be6dc49bbc;hp=162e154cf21f3750acbf7904bfa2997a8d21e727;hpb=386250b1e7b69e1050b8eb96402ea764dbc77b25;p=bluesky.git diff --git a/inode.c b/inode.c index 162e154..b1071a6 100644 --- a/inode.c +++ b/inode.c @@ -114,6 +114,7 @@ BlueSkyFS *bluesky_new_fs(gchar *name) fs->inodes = g_hash_table_new(bluesky_fs_key_hash_func, bluesky_fs_key_equal_func); fs->next_inum = BLUESKY_ROOT_INUM + 1; + fs->store = s3store_new(); return fs; } @@ -132,12 +133,14 @@ uint64_t bluesky_fs_alloc_inode(BlueSkyFS *fs) return inum; } -BlueSkyInode *bluesky_new_inode(uint64_t inum, BlueSkyFileType type) +BlueSkyInode *bluesky_new_inode(uint64_t inum, BlueSkyFS *fs, + BlueSkyFileType type) { BlueSkyInode *i = g_new0(BlueSkyInode, 1); i->lock = g_mutex_new(); i->type = type; + i->fs = fs; i->inum = inum; switch (type) { @@ -268,7 +271,7 @@ void bluesky_file_write(BlueSkyInode *inode, uint64_t offset, BlueSkyBlock *b = &g_array_index(inode->blocks, BlueSkyBlock, block_num); memcpy(&b->data[block_offset], data, bytes); - bluesky_block_flush(b); + bluesky_block_flush(inode->fs, b); offset += bytes; data += bytes; @@ -313,7 +316,7 @@ void bluesky_file_read(BlueSkyInode *inode, uint64_t offset, } /* Write the given block to cloud-backed storage and mark it clean. */ -void bluesky_block_flush(BlueSkyBlock *block) +void bluesky_block_flush(BlueSkyFS *fs, BlueSkyBlock *block) { if (block->type != BLUESKY_BLOCK_DIRTY) return; @@ -327,7 +330,7 @@ void bluesky_block_flush(BlueSkyBlock *block) const gchar *name = g_checksum_get_string(csum); g_print("Flushing block as %s\n", name); - //memstore_put(store, name, data); + s3store_put(fs->store, name, data); g_free(block->ref); block->ref = g_strdup(name); block->type = BLUESKY_BLOCK_CACHED;