projects
/
bluesky.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Implement flushing of file blocks to Amazon S3.
[bluesky.git]
/
inode.c
diff --git
a/inode.c
b/inode.c
index
162e154
..
b1071a6
100644
(file)
--- 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->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;
}
return fs;
}
@@
-132,12
+133,14
@@
uint64_t bluesky_fs_alloc_inode(BlueSkyFS *fs)
return inum;
}
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;
{
BlueSkyInode *i = g_new0(BlueSkyInode, 1);
i->lock = g_mutex_new();
i->type = type;
+ i->fs = fs;
i->inum = inum;
switch (type) {
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);
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;
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. */
}
/* Write the given block to cloud-backed storage and mark it clean. */
-void bluesky_block_flush(BlueSkyBlock *block)
+void bluesky_block_flush(BlueSky
FS *fs, BlueSky
Block *block)
{
if (block->type != BLUESKY_BLOCK_DIRTY)
return;
{
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);
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;
g_free(block->ref);
block->ref = g_strdup(name);
block->type = BLUESKY_BLOCK_CACHED;