mirror of https://github.com/xqemu/xqemu.git
mirror: Switch mirror_do_zero_or_discard() to byte-based
We are gradually converting to byte-based interfaces, as they are easier to reason about than sector-based. Convert another internal function (no semantic change). Signed-off-by: Eric Blake <eblake@redhat.com> Reviewed-by: John Snow <jsnow@redhat.com> Reviewed-by: Jeff Cody <jcody@redhat.com> Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
parent
b436982f04
commit
e6f2419389
|
@ -305,8 +305,8 @@ static int mirror_do_read(MirrorBlockJob *s, int64_t sector_num,
|
||||||
}
|
}
|
||||||
|
|
||||||
static void mirror_do_zero_or_discard(MirrorBlockJob *s,
|
static void mirror_do_zero_or_discard(MirrorBlockJob *s,
|
||||||
int64_t sector_num,
|
int64_t offset,
|
||||||
int nb_sectors,
|
uint64_t bytes,
|
||||||
bool is_discard)
|
bool is_discard)
|
||||||
{
|
{
|
||||||
MirrorOp *op;
|
MirrorOp *op;
|
||||||
|
@ -315,16 +315,16 @@ static void mirror_do_zero_or_discard(MirrorBlockJob *s,
|
||||||
* so the freeing in mirror_iteration_done is nop. */
|
* so the freeing in mirror_iteration_done is nop. */
|
||||||
op = g_new0(MirrorOp, 1);
|
op = g_new0(MirrorOp, 1);
|
||||||
op->s = s;
|
op->s = s;
|
||||||
op->offset = sector_num * BDRV_SECTOR_SIZE;
|
op->offset = offset;
|
||||||
op->bytes = nb_sectors * BDRV_SECTOR_SIZE;
|
op->bytes = bytes;
|
||||||
|
|
||||||
s->in_flight++;
|
s->in_flight++;
|
||||||
s->bytes_in_flight += nb_sectors * BDRV_SECTOR_SIZE;
|
s->bytes_in_flight += bytes;
|
||||||
if (is_discard) {
|
if (is_discard) {
|
||||||
blk_aio_pdiscard(s->target, sector_num << BDRV_SECTOR_BITS,
|
blk_aio_pdiscard(s->target, offset,
|
||||||
op->bytes, mirror_write_complete, op);
|
op->bytes, mirror_write_complete, op);
|
||||||
} else {
|
} else {
|
||||||
blk_aio_pwrite_zeroes(s->target, sector_num * BDRV_SECTOR_SIZE,
|
blk_aio_pwrite_zeroes(s->target, offset,
|
||||||
op->bytes, s->unmap ? BDRV_REQ_MAY_UNMAP : 0,
|
op->bytes, s->unmap ? BDRV_REQ_MAY_UNMAP : 0,
|
||||||
mirror_write_complete, op);
|
mirror_write_complete, op);
|
||||||
}
|
}
|
||||||
|
@ -453,7 +453,8 @@ static uint64_t coroutine_fn mirror_iteration(MirrorBlockJob *s)
|
||||||
break;
|
break;
|
||||||
case MIRROR_METHOD_ZERO:
|
case MIRROR_METHOD_ZERO:
|
||||||
case MIRROR_METHOD_DISCARD:
|
case MIRROR_METHOD_DISCARD:
|
||||||
mirror_do_zero_or_discard(s, sector_num, io_sectors,
|
mirror_do_zero_or_discard(s, sector_num * BDRV_SECTOR_SIZE,
|
||||||
|
io_sectors * BDRV_SECTOR_SIZE,
|
||||||
mirror_method == MIRROR_METHOD_DISCARD);
|
mirror_method == MIRROR_METHOD_DISCARD);
|
||||||
if (write_zeroes_ok) {
|
if (write_zeroes_ok) {
|
||||||
io_bytes_acct = 0;
|
io_bytes_acct = 0;
|
||||||
|
@ -657,7 +658,8 @@ static int coroutine_fn mirror_dirty_init(MirrorBlockJob *s)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
mirror_do_zero_or_discard(s, sector_num, nb_sectors, false);
|
mirror_do_zero_or_discard(s, sector_num * BDRV_SECTOR_SIZE,
|
||||||
|
nb_sectors * BDRV_SECTOR_SIZE, false);
|
||||||
sector_num += nb_sectors;
|
sector_num += nb_sectors;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue