]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
librados: fix end_block calculation for aio_read
authorYehuda Sadeh <yehuda@hq.newdream.net>
Thu, 23 Jun 2011 00:13:22 +0000 (17:13 -0700)
committerYehuda Sadeh <yehuda@hq.newdream.net>
Thu, 23 Jun 2011 19:32:10 +0000 (12:32 -0700)
Conflicts:

src/librbd.cc

src/librbd.cc

index 070f10a10e8205842c315e5800b08618c2038dd7..16e882fff57b71d2c90238f98026fa89c0f392f8 100644 (file)
@@ -1266,7 +1266,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);
@@ -1415,7 +1415,7 @@ int aio_read(ImageCtx *ictx, uint64_t off, size_t len,
   int total_read = 0;
   ictx->lock.Lock();
   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);
   ictx->lock.Unlock();
   uint64_t left = len;