X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Ffile.c;h=5c4b157febaf6956dd2c55d524184e9691a55c0c;hb=de73632892d6bd009b290426253bdbe41d8844f7;hp=a6f6a15b34b05a8997d6091554f88e5679a89dc6;hpb=1b4b1366b18685f5680ab01b58b8e49d32b14e7e;p=bluesky.git diff --git a/bluesky/file.c b/bluesky/file.c index a6f6a15..5c4b157 100644 --- a/bluesky/file.c +++ b/bluesky/file.c @@ -166,31 +166,22 @@ void bluesky_file_read(BlueSkyInode *inode, uint64_t offset, g_return_if_fail(offset < inode->size); g_return_if_fail(len <= inode->size - offset); -#if 0 - /* Start fetches on any data blocks that we will need for this read. */ - BlueSkyStoreAsync *barrier = bluesky_store_async_new(inode->fs->store); - barrier->op = STORE_OP_BARRIER; + BlueSkyProfile *profile = bluesky_profile_get(); + + bluesky_profile_add_event(profile, + g_strdup_printf("Start file read prefetch")); uint64_t start_block, end_block; start_block = offset / BLUESKY_BLOCK_SIZE; end_block = (offset + len - 1) / BLUESKY_BLOCK_SIZE; - if (bluesky_verbose) { - g_log("bluesky/file", G_LOG_LEVEL_DEBUG, - "Start prefetch on blocks %"PRIi64" .. %"PRIi64, - start_block, end_block); - } for (uint64_t i = start_block; i <= end_block; i++) { BlueSkyBlock *b = &g_array_index(inode->blocks, BlueSkyBlock, i); if (b->type == BLUESKY_BLOCK_REF) - bluesky_block_fetch(inode, b, barrier); + bluesky_cloudlog_prefetch(b->ref); } - bluesky_store_async_submit(barrier); - bluesky_store_async_wait(barrier); - bluesky_store_async_unref(barrier); - if (bluesky_verbose) { - g_log("bluesky/file", G_LOG_LEVEL_DEBUG, "Prefetch complete."); - } -#endif + + bluesky_profile_add_event(profile, + g_strdup_printf("End file read prefetch")); while (len > 0) { uint64_t block_num = offset / BLUESKY_BLOCK_SIZE; @@ -216,6 +207,9 @@ void bluesky_file_read(BlueSkyInode *inode, uint64_t offset, buf += bytes; len -= bytes; } + + bluesky_profile_add_event(profile, + g_strdup_printf("BlueSky read complete")); } void bluesky_block_fetch(BlueSkyInode *inode, BlueSkyBlock *block, @@ -241,7 +235,7 @@ void bluesky_block_flush(BlueSkyInode *inode, BlueSkyBlock *block, g_assert(block->ref == NULL); - BlueSkyCloudLog *cloudlog = bluesky_cloudlog_new(fs); + BlueSkyCloudLog *cloudlog = bluesky_cloudlog_new(fs, NULL); cloudlog->type = LOGTYPE_DATA; cloudlog->inum = inode->inum; cloudlog->data = block->dirty; // String ownership is transferred