X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=bluesky%2Ffile.c;h=a4a8108a1b93ca2b36905dade9bf28a7350870d9;hb=7f47ef48ce38ab71fc414bee592a9078ed1c0a7a;hp=7b11e70e4512d0ef169d465aa13557e8da6e3012;hpb=34a5a18782c0656f05c81c3dbcc6e65600726765;p=bluesky.git diff --git a/bluesky/file.c b/bluesky/file.c index 7b11e70..a4a8108 100644 --- a/bluesky/file.c +++ b/bluesky/file.c @@ -192,6 +192,16 @@ void bluesky_file_read(BlueSkyInode *inode, uint64_t offset, } #endif + uint64_t start_block, end_block; + start_block = offset / BLUESKY_BLOCK_SIZE; + end_block = (offset + len - 1) / BLUESKY_BLOCK_SIZE; + 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_cloudlog_prefetch(b->ref); + } + while (len > 0) { uint64_t block_num = offset / BLUESKY_BLOCK_SIZE; gint block_offset = offset % BLUESKY_BLOCK_SIZE;