[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 06/10] mirror: clarify mirror_do_read return code
From: |
Jeff Cody |
Subject: |
[Qemu-devel] [PULL 06/10] mirror: clarify mirror_do_read return code |
Date: |
Tue, 28 Jun 2016 23:10:40 -0400 |
From: John Snow <address@hidden>
mirror_do_read intends to return the number of sectors processed after
the starting sector, without regard to how many sectors were processed
before the starting sector due to alignment.
Clean up the comments and code to hopefully illustrate this more clearly.
This also fixes an issue in initialization where if the mirror buffer size
is initialized to smaller than the number of sectors being requested for
transfer, we report back an incorrectly large number to the caller.
Signed-off-by: John Snow <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Fam Zheng <address@hidden>
Message-id: address@hidden
Signed-off-by: Jeff Cody <address@hidden>
---
block/mirror.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/block/mirror.c b/block/mirror.c
index 930ac96..42ebc3b 100644
--- a/block/mirror.c
+++ b/block/mirror.c
@@ -218,7 +218,9 @@ static inline void mirror_wait_for_io(MirrorBlockJob *s)
}
/* Submit async read while handling COW.
- * Returns: nb_sectors if no alignment is necessary, or
+ * Returns: The number of sectors copied after and including sector_num,
+ * excluding any sectors copied prior to sector_num due to alignment.
+ * This will be nb_sectors if no alignment is necessary, or
* (new_end - sector_num) if tail is rounded up or down due to
* alignment or buffer limit.
*/
@@ -227,7 +229,7 @@ static int mirror_do_read(MirrorBlockJob *s, int64_t
sector_num,
{
BlockBackend *source = s->common.blk;
int sectors_per_chunk, nb_chunks;
- int ret = nb_sectors;
+ int ret;
MirrorOp *op;
sectors_per_chunk = s->granularity >> BDRV_SECTOR_BITS;
@@ -235,6 +237,7 @@ static int mirror_do_read(MirrorBlockJob *s, int64_t
sector_num,
/* We can only handle as much as buf_size at a time. */
nb_sectors = MIN(s->buf_size >> BDRV_SECTOR_BITS, nb_sectors);
assert(nb_sectors);
+ ret = nb_sectors;
if (s->cow_bitmap) {
ret += mirror_cow_align(s, §or_num, &nb_sectors);
--
1.9.3
- [Qemu-devel] [PULL 00/10] Block patches, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 02/10] block/nfs: refuse readahead if cache.direct is on, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 01/10] block/gluster: add support for SEEK_DATA/SEEK_HOLE, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 03/10] block/nfs: add support for libnfs pagecache, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 04/10] mirror: fix trace_mirror_yield_in_flight usage in mirror_iteration(), Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 05/10] block/gluster: add support for selecting debug logging level, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 06/10] mirror: clarify mirror_do_read return code,
Jeff Cody <=
- [Qemu-devel] [PULL 07/10] mirror: limit niov to IOV_MAX elements, again, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 09/10] blockjob: assert(cb) when create job, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 08/10] iotests: add small-granularity mirror test, Jeff Cody, 2016/06/28
- [Qemu-devel] [PULL 10/10] mirror: fix misleading comments, Jeff Cody, 2016/06/28
- Re: [Qemu-devel] [PULL 00/10] Block patches, Peter Maydell, 2016/06/29