* [PATCH v9 4/5] virtio-blk: add some trace events for zoned emulation
@ 2023-03-24 10:54 Sam Li
2023-03-24 10:54 ` [PATCH v9 5/5] docs/zoned-storage:add zoned emulation use case Sam Li
0 siblings, 1 reply; 4+ messages in thread
From: Sam Li @ 2023-03-24 10:54 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, stefanha, Hanna Reitz, qemu-block, Eric Blake,
Paolo Bonzini, Raphael Norwitz, Michael S. Tsirkin, Cornelia Huck,
damien.lemoal, hare, kvm, Markus Armbruster, dmitry.fomichev,
Sam Li
Signed-off-by: Sam Li <faithilikerun@gmail.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
---
hw/block/trace-events | 7 +++++++
hw/block/virtio-blk.c | 12 ++++++++++++
2 files changed, 19 insertions(+)
diff --git a/hw/block/trace-events b/hw/block/trace-events
index 2c45a62bd5..34be8b9135 100644
--- a/hw/block/trace-events
+++ b/hw/block/trace-events
@@ -44,9 +44,16 @@ pflash_write_unknown(const char *name, uint8_t cmd) "%s: unknown command 0x%02x"
# virtio-blk.c
virtio_blk_req_complete(void *vdev, void *req, int status) "vdev %p req %p status %d"
virtio_blk_rw_complete(void *vdev, void *req, int ret) "vdev %p req %p ret %d"
+virtio_blk_zone_report_complete(void *vdev, void *req, unsigned int nr_zones, int ret) "vdev %p req %p nr_zones %u ret %d"
+virtio_blk_zone_mgmt_complete(void *vdev, void *req, int ret) "vdev %p req %p ret %d"
+virtio_blk_zone_append_complete(void *vdev, void *req, int64_t sector, int ret) "vdev %p req %p, append sector 0x%" PRIx64 " ret %d"
virtio_blk_handle_write(void *vdev, void *req, uint64_t sector, size_t nsectors) "vdev %p req %p sector %"PRIu64" nsectors %zu"
virtio_blk_handle_read(void *vdev, void *req, uint64_t sector, size_t nsectors) "vdev %p req %p sector %"PRIu64" nsectors %zu"
virtio_blk_submit_multireq(void *vdev, void *mrb, int start, int num_reqs, uint64_t offset, size_t size, bool is_write) "vdev %p mrb %p start %d num_reqs %d offset %"PRIu64" size %zu is_write %d"
+virtio_blk_handle_zone_report(void *vdev, void *req, int64_t sector, unsigned int nr_zones) "vdev %p req %p sector 0x%" PRIx64 " nr_zones %u"
+virtio_blk_handle_zone_mgmt(void *vdev, void *req, uint8_t op, int64_t sector, int64_t len) "vdev %p req %p op 0x%x sector 0x%" PRIx64 " len 0x%" PRIx64 ""
+virtio_blk_handle_zone_reset_all(void *vdev, void *req, int64_t sector, int64_t len) "vdev %p req %p sector 0x%" PRIx64 " cap 0x%" PRIx64 ""
+virtio_blk_handle_zone_append(void *vdev, void *req, int64_t sector) "vdev %p req %p, append sector 0x%" PRIx64 ""
# hd-geometry.c
hd_geometry_lchs_guess(void *blk, int cyls, int heads, int secs) "blk %p LCHS %d %d %d"
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 0d85c2c9b0..2afd5cf96c 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -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;
}
--
2.39.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v9 5/5] docs/zoned-storage:add zoned emulation use case
2023-03-24 10:54 [PATCH v9 4/5] virtio-blk: add some trace events for zoned emulation Sam Li
@ 2023-03-24 10:54 ` Sam Li
2023-03-24 12:05 ` Sam Li
0 siblings, 1 reply; 4+ messages in thread
From: Sam Li @ 2023-03-24 10:54 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, stefanha, Hanna Reitz, qemu-block, Eric Blake,
Paolo Bonzini, Raphael Norwitz, Michael S. Tsirkin, Cornelia Huck,
damien.lemoal, hare, kvm, Markus Armbruster, dmitry.fomichev,
Sam Li
Add the documentation about the example of using virtio-blk driver
to pass the zoned block devices through to the guest.
Signed-off-by: Sam Li <faithilikerun@gmail.com>
---
docs/devel/zoned-storage.rst | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/docs/devel/zoned-storage.rst b/docs/devel/zoned-storage.rst
index 6a36133e51..05ecf3729c 100644
--- a/docs/devel/zoned-storage.rst
+++ b/docs/devel/zoned-storage.rst
@@ -41,3 +41,20 @@ APIs for zoned storage emulation or testing.
For example, to test zone_report on a null_blk device using qemu-io is:
$ path/to/qemu-io --image-opts -n driver=host_device,filename=/dev/nullb0
-c "zrp offset nr_zones"
+
+To expose the host's zoned block device through virtio-blk, the command line
+can be (includes the -device parameter):
+ -blockdev node-name=drive0,driver=host_device,filename=/dev/nullb0,
+ cache.direct=on \
+ -device virtio-blk-pci,drive=drive0
+Or only use the -drive parameter:
+ -driver driver=host_device,file=/dev/nullb0,if=virtio,cache.direct=on
+
+Additionally, QEMU has several ways of supporting zoned storage, including:
+(1) Using virtio-scsi: --device scsi-block allows for the passing through of
+SCSI ZBC devices, enabling the attachment of ZBC or ZAC HDDs to QEMU.
+(2) PCI device pass-through: While NVMe ZNS emulation is available for testing
+purposes, it cannot yet pass through a zoned device from the host. To pass on
+the NVMe ZNS device to the guest, use VFIO PCI pass the entire NVMe PCI adapter
+through to the guest. Likewise, an HDD HBA can be passed on to QEMU all HDDs
+attached to the HBA.
--
2.39.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v9 5/5] docs/zoned-storage:add zoned emulation use case
2023-03-24 10:54 ` [PATCH v9 5/5] docs/zoned-storage:add zoned emulation use case Sam Li
@ 2023-03-24 12:05 ` Sam Li
0 siblings, 0 replies; 4+ messages in thread
From: Sam Li @ 2023-03-24 12:05 UTC (permalink / raw)
To: qemu-devel
Cc: Kevin Wolf, stefanha, Hanna Reitz, qemu-block, Eric Blake,
Paolo Bonzini, Raphael Norwitz, Michael S. Tsirkin, Cornelia Huck,
damien.lemoal, hare, kvm, Markus Armbruster, dmitry.fomichev
Sam Li <faithilikerun@gmail.com> 于2023年3月24日周五 18:54写道:
>
> Add the documentation about the example of using virtio-blk driver
> to pass the zoned block devices through to the guest.
>
> Signed-off-by: Sam Li <faithilikerun@gmail.com>
> ---
> docs/devel/zoned-storage.rst | 17 +++++++++++++++++
> 1 file changed, 17 insertions(+)
>
> diff --git a/docs/devel/zoned-storage.rst b/docs/devel/zoned-storage.rst
> index 6a36133e51..05ecf3729c 100644
> --- a/docs/devel/zoned-storage.rst
> +++ b/docs/devel/zoned-storage.rst
> @@ -41,3 +41,20 @@ APIs for zoned storage emulation or testing.
> For example, to test zone_report on a null_blk device using qemu-io is:
> $ path/to/qemu-io --image-opts -n driver=host_device,filename=/dev/nullb0
> -c "zrp offset nr_zones"
> +
> +To expose the host's zoned block device through virtio-blk, the command line
> +can be (includes the -device parameter):
> + -blockdev node-name=drive0,driver=host_device,filename=/dev/nullb0,
> + cache.direct=on \
> + -device virtio-blk-pci,drive=drive0
> +Or only use the -drive parameter:
> + -driver driver=host_device,file=/dev/nullb0,if=virtio,cache.direct=on
> +
> +Additionally, QEMU has several ways of supporting zoned storage, including:
> +(1) Using virtio-scsi: --device scsi-block allows for the passing through of
> +SCSI ZBC devices, enabling the attachment of ZBC or ZAC HDDs to QEMU.
> +(2) PCI device pass-through: While NVMe ZNS emulation is available for testing
> +purposes, it cannot yet pass through a zoned device from the host. To pass on
> +the NVMe ZNS device to the guest, use VFIO PCI pass the entire NVMe PCI adapter
> +through to the guest. Likewise, an HDD HBA can be passed on to QEMU all HDDs
> +attached to the HBA.
> --
> 2.39.2
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH v9 5/5] docs/zoned-storage:add zoned emulation use case
2023-03-27 14:45 [PATCH v9 0/5] Add zoned storage emulation to virtio-blk driver Sam Li
@ 2023-03-27 14:45 ` Sam Li
0 siblings, 0 replies; 4+ messages in thread
From: Sam Li @ 2023-03-27 14:45 UTC (permalink / raw)
To: qemu-devel
Cc: Paolo Bonzini, Eric Blake, Michael S. Tsirkin, Markus Armbruster,
Raphael Norwitz, Stefan Hajnoczi, Hanna Reitz, Cornelia Huck,
dmitry.fomichev, kvm, damien.lemoal, hare, Kevin Wolf, qemu-block,
Sam Li
Add the documentation about the example of using virtio-blk driver
to pass the zoned block devices through to the guest.
Signed-off-by: Sam Li <faithilikerun@gmail.com>
---
docs/devel/zoned-storage.rst | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/docs/devel/zoned-storage.rst b/docs/devel/zoned-storage.rst
index 6a36133e51..05ecf3729c 100644
--- a/docs/devel/zoned-storage.rst
+++ b/docs/devel/zoned-storage.rst
@@ -41,3 +41,20 @@ APIs for zoned storage emulation or testing.
For example, to test zone_report on a null_blk device using qemu-io is:
$ path/to/qemu-io --image-opts -n driver=host_device,filename=/dev/nullb0
-c "zrp offset nr_zones"
+
+To expose the host's zoned block device through virtio-blk, the command line
+can be (includes the -device parameter):
+ -blockdev node-name=drive0,driver=host_device,filename=/dev/nullb0,
+ cache.direct=on \
+ -device virtio-blk-pci,drive=drive0
+Or only use the -drive parameter:
+ -driver driver=host_device,file=/dev/nullb0,if=virtio,cache.direct=on
+
+Additionally, QEMU has several ways of supporting zoned storage, including:
+(1) Using virtio-scsi: --device scsi-block allows for the passing through of
+SCSI ZBC devices, enabling the attachment of ZBC or ZAC HDDs to QEMU.
+(2) PCI device pass-through: While NVMe ZNS emulation is available for testing
+purposes, it cannot yet pass through a zoned device from the host. To pass on
+the NVMe ZNS device to the guest, use VFIO PCI pass the entire NVMe PCI adapter
+through to the guest. Likewise, an HDD HBA can be passed on to QEMU all HDDs
+attached to the HBA.
--
2.39.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-03-27 14:47 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-24 10:54 [PATCH v9 4/5] virtio-blk: add some trace events for zoned emulation Sam Li
2023-03-24 10:54 ` [PATCH v9 5/5] docs/zoned-storage:add zoned emulation use case Sam Li
2023-03-24 12:05 ` Sam Li
-- strict thread matches above, loose matches on Subject: below --
2023-03-27 14:45 [PATCH v9 0/5] Add zoned storage emulation to virtio-blk driver Sam Li
2023-03-27 14:45 ` [PATCH v9 5/5] docs/zoned-storage:add zoned emulation use case Sam Li
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).