|
@@ -676,6 +676,7 @@ static void virtio_blk_zone_report_complete(void *opaque, int ret)
|
|
|
int64_t nz = data->zone_report_data.nr_zones;
|
|
|
int8_t err_status = VIRTIO_BLK_S_OK;
|
|
|
|
|
|
+ trace_virtio_blk_zone_report_complete(vdev, req, nz, ret);
|
|
|
if (ret) {
|
|
|
err_status = VIRTIO_BLK_S_ZONE_INVALID_CMD;
|
|
|
goto out;
|
|
@@ -792,6 +793,8 @@ static void virtio_blk_handle_zone_report(VirtIOBlockReq *req,
|
|
|
nr_zones = (req->in_len - sizeof(struct virtio_blk_inhdr) -
|
|
|
sizeof(struct virtio_blk_zone_report)) /
|
|
|
sizeof(struct virtio_blk_zone_descriptor);
|
|
|
+ trace_virtio_blk_handle_zone_report(vdev, req,
|
|
|
+ offset >> BDRV_SECTOR_BITS, nr_zones);
|
|
|
|
|
|
zone_size = sizeof(BlockZoneDescriptor) * nr_zones;
|
|
|
data = g_malloc(sizeof(ZoneCmdData));
|
|
@@ -814,7 +817,9 @@ static void virtio_blk_zone_mgmt_complete(void *opaque, int ret)
|
|
|
{
|
|
|
VirtIOBlockReq *req = opaque;
|
|
|
VirtIOBlock *s = req->dev;
|
|
|
+ VirtIODevice *vdev = VIRTIO_DEVICE(s);
|
|
|
int8_t err_status = VIRTIO_BLK_S_OK;
|
|
|
+ trace_virtio_blk_zone_mgmt_complete(vdev, req,ret);
|
|
|
|
|
|
if (ret) {
|
|
|
err_status = VIRTIO_BLK_S_ZONE_INVALID_CMD;
|
|
@@ -841,6 +846,8 @@ static int virtio_blk_handle_zone_mgmt(VirtIOBlockReq *req, BlockZoneOp op)
|
|
|
/* Entire drive capacity */
|
|
|
offset = 0;
|
|
|
len = capacity;
|
|
|
+ trace_virtio_blk_handle_zone_reset_all(vdev, req, 0,
|
|
|
+ bs->total_sectors);
|
|
|
} else {
|
|
|
if (bs->bl.zone_size > capacity - offset) {
|
|
|
/* The zoned device allows the last smaller zone. */
|
|
@@ -848,6 +855,9 @@ static int virtio_blk_handle_zone_mgmt(VirtIOBlockReq *req, BlockZoneOp op)
|
|
|
} else {
|
|
|
len = bs->bl.zone_size;
|
|
|
}
|
|
|
+ trace_virtio_blk_handle_zone_mgmt(vdev, req, op,
|
|
|
+ offset >> BDRV_SECTOR_BITS,
|
|
|
+ len >> BDRV_SECTOR_BITS);
|
|
|
}
|
|
|
|
|
|
if (!check_zoned_request(s, offset, len, false, &err_status)) {
|
|
@@ -888,6 +898,7 @@ static void virtio_blk_zone_append_complete(void *opaque, int ret)
|
|
|
err_status = VIRTIO_BLK_S_ZONE_INVALID_CMD;
|
|
|
goto out;
|
|
|
}
|
|
|
+ trace_virtio_blk_zone_append_complete(vdev, req, append_sector, ret);
|
|
|
|
|
|
out:
|
|
|
aio_context_acquire(blk_get_aio_context(s->conf.conf.blk));
|
|
@@ -909,6 +920,7 @@ static int virtio_blk_handle_zone_append(VirtIOBlockReq *req,
|
|
|
int64_t offset = virtio_ldq_p(vdev, &req->out.sector) << BDRV_SECTOR_BITS;
|
|
|
int64_t len = iov_size(out_iov, out_num);
|
|
|
|
|
|
+ trace_virtio_blk_handle_zone_append(vdev, req, offset >> BDRV_SECTOR_BITS);
|
|
|
if (!check_zoned_request(s, offset, len, true, &err_status)) {
|
|
|
goto out;
|
|
|
}
|