[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v6 08/20] virtio: Switch to byte-based aio block acc
From: |
Eric Blake |
Subject: |
[Qemu-devel] [PATCH v6 08/20] virtio: Switch to byte-based aio block access |
Date: |
Wed, 4 May 2016 17:55:14 -0600 |
Sector-based blk_aio_readv() and blk_aio_writev() should die; switch
to byte-based blk_aio_preadv() and blk_aio_pwritev() instead.
The trace is modified at the same time, and nb_sectors is now
unused. Fix a comment typo while in the vicinity.
Signed-off-by: Eric Blake <address@hidden>
---
hw/block/virtio-blk.c | 18 ++++++++----------
trace-events | 2 +-
2 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 3f88f8c..284e646 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -322,7 +322,6 @@ static inline void submit_requests(BlockBackend *blk,
MultiReqBuffer *mrb,
{
QEMUIOVector *qiov = &mrb->reqs[start]->qiov;
int64_t sector_num = mrb->reqs[start]->sector_num;
- int nb_sectors = mrb->reqs[start]->qiov.size / BDRV_SECTOR_SIZE;
bool is_write = mrb->is_write;
if (num_reqs > 1) {
@@ -331,7 +330,7 @@ static inline void submit_requests(BlockBackend *blk,
MultiReqBuffer *mrb,
int tmp_niov = qiov->niov;
/* mrb->reqs[start]->qiov was initialized from external so we can't
- * modifiy it here. We need to initialize it locally and then add the
+ * modify it here. We need to initialize it locally and then add the
* external iovecs. */
qemu_iovec_init(qiov, niov);
@@ -343,23 +342,22 @@ static inline void submit_requests(BlockBackend *blk,
MultiReqBuffer *mrb,
qemu_iovec_concat(qiov, &mrb->reqs[i]->qiov, 0,
mrb->reqs[i]->qiov.size);
mrb->reqs[i - 1]->mr_next = mrb->reqs[i];
- nb_sectors += mrb->reqs[i]->qiov.size / BDRV_SECTOR_SIZE;
}
- assert(nb_sectors == qiov->size / BDRV_SECTOR_SIZE);
- trace_virtio_blk_submit_multireq(mrb, start, num_reqs, sector_num,
- nb_sectors, is_write);
+ trace_virtio_blk_submit_multireq(mrb, start, num_reqs,
+ sector_num << BDRV_SECTOR_BITS,
+ qiov->size, is_write);
block_acct_merge_done(blk_get_stats(blk),
is_write ? BLOCK_ACCT_WRITE : BLOCK_ACCT_READ,
num_reqs - 1);
}
if (is_write) {
- blk_aio_writev(blk, sector_num, qiov, nb_sectors,
+ blk_aio_pwritev(blk, sector_num << BDRV_SECTOR_BITS, qiov, 0,
+ virtio_blk_rw_complete, mrb->reqs[start]);
+ } else {
+ blk_aio_preadv(blk, sector_num << BDRV_SECTOR_BITS, qiov, 0,
virtio_blk_rw_complete, mrb->reqs[start]);
- } else {
- blk_aio_readv(blk, sector_num, qiov, nb_sectors,
- virtio_blk_rw_complete, mrb->reqs[start]);
}
}
diff --git a/trace-events b/trace-events
index b4acd2a..b588091 100644
--- a/trace-events
+++ b/trace-events
@@ -118,7 +118,7 @@ virtio_blk_req_complete(void *req, int status) "req %p
status %d"
virtio_blk_rw_complete(void *req, int ret) "req %p ret %d"
virtio_blk_handle_write(void *req, uint64_t sector, size_t nsectors) "req %p
sector %"PRIu64" nsectors %zu"
virtio_blk_handle_read(void *req, uint64_t sector, size_t nsectors) "req %p
sector %"PRIu64" nsectors %zu"
-virtio_blk_submit_multireq(void *mrb, int start, int num_reqs, uint64_t
sector, size_t nsectors, bool is_write) "mrb %p start %d num_reqs %d sector
%"PRIu64" nsectors %zu is_write %d"
+virtio_blk_submit_multireq(void *mrb, int start, int num_reqs, uint64_t
offset, size_t size, bool is_write) "mrb %p start %d num_reqs %d offset
%"PRIu64" size %zu is_write %d"
# hw/block/dataplane/virtio-blk.c
virtio_blk_data_plane_start(void *s) "dataplane %p"
--
2.5.5
- Re: [Qemu-devel] [PATCH v6 07/20] scsi-disk: Switch to byte-based aio block access, (continued)
[Qemu-devel] [PATCH v6 03/20] block: Switch blk_read_unthrottled() to byte interface, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 01/20] block: Allow BDRV_REQ_FUA through blk_pwrite(), Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 02/20] block: Drop private ioctl-only members of BlockRequest, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 05/20] block: Introduce byte-based aio read/write, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 08/20] virtio: Switch to byte-based aio block access,
Eric Blake <=
[Qemu-devel] [PATCH v6 09/20] xen_disk: Switch to byte-based aio block access, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 18/20] qemu-img: Switch to byte-based block access, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 10/20] fdc: Switch to byte-based block access, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 11/20] nand: Switch to byte-based block access, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 19/20] qemu-io: Switch to byte-based block access, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 13/20] pflash: Switch to byte-based block access, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 20/20] block: Kill unused sector-based blk_* functions, Eric Blake, 2016/05/04
[Qemu-devel] [PATCH v6 17/20] nbd: Switch to byte-based block access, Eric Blake, 2016/05/04