From 6ddee81eb5ba07c4caee121be77461c2de473037 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Tue, 21 Jun 2011 16:31:44 -0700 Subject: [PATCH] librbd: fix and cleanup a bit read_iterate --- src/librbd.cc | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/librbd.cc b/src/librbd.cc index 061b4c68585b0..4a1e6719dfbc8 100644 --- a/src/librbd.cc +++ b/src/librbd.cc @@ -1126,7 +1126,7 @@ int64_t read_iterate(ImageCtx *ictx, uint64_t off, size_t len, map m; map::iterator iter; - uint64_t bl_ofs = 0, buf_bl_pos = 0; + uint64_t bl_ofs = 0; r = ictx->data_ctx.sparse_read(oid, m, bl, read_len, block_ofs); if (r < 0 && r == -ENOENT) r = 0; @@ -1138,28 +1138,28 @@ int64_t read_iterate(ImageCtx *ictx, uint64_t off, size_t len, uint64_t extent_ofs = iter->first; size_t extent_len = iter->second; /* a hole? */ - if (extent_ofs - block_ofs) { - r = cb(total_read + buf_bl_pos, extent_ofs - block_ofs, NULL, arg); + if (extent_ofs - block_ofs > 0) { + r = cb(total_read + block_ofs, extent_ofs - block_ofs, NULL, arg); if (r < 0) return r; } if (bl_ofs + extent_len > bl.length()) return -EIO; - buf_bl_pos += extent_ofs - block_ofs; + + block_ofs = extent_ofs; /* data */ - r = cb(total_read + buf_bl_pos, extent_len, bl.c_str() + bl_ofs, arg); + r = cb(total_read + block_ofs, extent_len, bl.c_str() + bl_ofs, arg); if (r < 0) return r; bl_ofs += extent_len; - buf_bl_pos += extent_len; block_ofs += extent_len; } /* last hole */ - if (read_len - buf_bl_pos) { - r = cb(total_read + buf_bl_pos, read_len - buf_bl_pos, NULL, arg); + if (read_len - block_ofs) { + r = cb(total_read + block_ofs, read_len - block_ofs, NULL, arg); if (r < 0) return r; } -- 2.39.5