librados: fix end_block calculation for aio_read

This commit is contained in:
Yehuda Sadeh 2011-06-22 17:13:22 -07:00
parent 30c47566d1
commit 5da066286c

View File

@ -1251,7 +1251,7 @@ void AioBlockCompletion::complete(ssize_t r)
dout(10) << "block_ofs=" << block_ofs << dendl;
/* a hole? */
if (extent_ofs - block_ofs) {
if (extent_ofs - block_ofs > 0) {
dout(10) << "<1>zeroing " << buf_bl_pos << "~" << extent_ofs << dendl;
dout(10) << "buf=" << (void *)(buf + buf_bl_pos) << "~" << (void *)(buf + extent_ofs - ofs - 1) << dendl;
memset(buf + buf_bl_pos, 0, extent_ofs - block_ofs);
@ -1391,7 +1391,7 @@ int aio_read(ImageCtx *ictx, uint64_t off, size_t len,
int64_t ret;
int total_read = 0;
uint64_t start_block = get_block_num(&ictx->header, off);
uint64_t end_block = get_block_num(&ictx->header, off + len);
uint64_t end_block = get_block_num(&ictx->header, off + len - 1);
uint64_t block_size = get_block_size(&ictx->header);
uint64_t left = len;