From: Hanna Czenczek <[email protected]> virtio_blk_handle_zone_append() starts accounting via block_acct_start(), but this is actually never completed. Do so.
Signed-off-by: Hanna Czenczek <[email protected]> Reviewed-by: Michael S. Tsirkin <[email protected]> Reviewed-by: Stefan Hajnoczi <[email protected]> Signed-off-by: Michael S. Tsirkin <[email protected]> Message-ID: <[email protected]> --- hw/block/virtio-blk.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 4110380392..61c341ce2c 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -755,7 +755,8 @@ static void virtio_blk_zone_append_complete(void *opaque, int ret) { ZoneCmdData *data = opaque; VirtIOBlockReq *req = data->req; - VirtIODevice *vdev = VIRTIO_DEVICE(req->dev); + VirtIOBlock *s = req->dev; + VirtIODevice *vdev = VIRTIO_DEVICE(s); int64_t append_sector, n; uint8_t err_status = VIRTIO_BLK_S_OK; @@ -778,6 +779,11 @@ static void virtio_blk_zone_append_complete(void *opaque, int ret) out: virtio_blk_req_complete(req, err_status); + if (err_status == VIRTIO_BLK_S_OK) { + block_acct_done(blk_get_stats(s->blk), &req->acct); + } else { + block_acct_failed(blk_get_stats(s->blk), &req->acct); + } g_free(req); g_free(data); } -- MST
