* [Qemu-devel] [PATCH 0/2] virtio-blk: miscellaneous changes @ 2017-12-06 19:53 Mark Kanda 2017-12-06 19:54 ` [Qemu-devel] [PATCH 1/2] virtio-blk: make queue size configurable Mark Kanda ` (2 more replies) 0 siblings, 3 replies; 12+ messages in thread From: Mark Kanda @ 2017-12-06 19:53 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda This series is for two minor virtio-blk changes. The first patch makes the virtio-blk queue size user configurable. The second patch rejects logical block size > physical block configurations (similar to a recent change in virtio-scsi). Mark Kanda (2): virtio-blk: make queue size configurable virtio-blk: reject configs with logical block size > physical block size hw/block/virtio-blk.c | 14 +++++++++++++- include/hw/virtio/virtio-blk.h | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 1/2] virtio-blk: make queue size configurable 2017-12-06 19:53 [Qemu-devel] [PATCH 0/2] virtio-blk: miscellaneous changes Mark Kanda @ 2017-12-06 19:54 ` Mark Kanda 2017-12-08 10:13 ` Stefan Hajnoczi 2017-12-06 19:54 ` [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Mark Kanda 2 siblings, 1 reply; 12+ messages in thread From: Mark Kanda @ 2017-12-06 19:54 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda Depending on the configuration, it can be beneficial to adjust the virtio-blk queue size to something other than the current default of 128. Add a new property to make the queue size configurable. Signed-off-by: Mark Kanda <mark.kanda@oracle.com> Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Ameya More <ameya.more@oracle.com> --- hw/block/virtio-blk.c | 7 ++++++- include/hw/virtio/virtio-blk.h | 1 + 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 05d1440..002c56f 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -928,6 +928,10 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) error_setg(errp, "num-queues property must be larger than 0"); return; } + if (!is_power_of_2(conf->queue_size)) { + error_setg(errp, "queue-size property must be a power of 2"); + return; + } blkconf_serial(&conf->conf, &conf->serial); blkconf_apply_backend_options(&conf->conf, @@ -953,7 +957,7 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) s->sector_mask = (s->conf.conf.logical_block_size / BDRV_SECTOR_SIZE) - 1; for (i = 0; i < conf->num_queues; i++) { - virtio_add_queue(vdev, 128, virtio_blk_handle_output); + virtio_add_queue(vdev, conf->queue_size, virtio_blk_handle_output); } virtio_blk_data_plane_create(vdev, conf, &s->dataplane, &err); if (err != NULL) { @@ -1012,6 +1016,7 @@ static Property virtio_blk_properties[] = { DEFINE_PROP_BIT("request-merging", VirtIOBlock, conf.request_merging, 0, true), DEFINE_PROP_UINT16("num-queues", VirtIOBlock, conf.num_queues, 1), + DEFINE_PROP_UINT16("queue-size", VirtIOBlock, conf.queue_size, 128), DEFINE_PROP_LINK("iothread", VirtIOBlock, conf.iothread, TYPE_IOTHREAD, IOThread *), DEFINE_PROP_END_OF_LIST(), diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h index d3c8a6f..5117431 100644 --- a/include/hw/virtio/virtio-blk.h +++ b/include/hw/virtio/virtio-blk.h @@ -39,6 +39,7 @@ struct VirtIOBlkConf uint32_t config_wce; uint32_t request_merging; uint16_t num_queues; + uint16_t queue_size; }; struct VirtIOBlockDataPlane; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 1/2] virtio-blk: make queue size configurable 2017-12-06 19:54 ` [Qemu-devel] [PATCH 1/2] virtio-blk: make queue size configurable Mark Kanda @ 2017-12-08 10:13 ` Stefan Hajnoczi 0 siblings, 0 replies; 12+ messages in thread From: Stefan Hajnoczi @ 2017-12-08 10:13 UTC (permalink / raw) To: Mark Kanda Cc: qemu-block, qemu-devel, martin.petersen, konrad.wilk, ameya.more, stefanha, karl.heubaum [-- Attachment #1: Type: text/plain, Size: 889 bytes --] On Wed, Dec 06, 2017 at 01:54:00PM -0600, Mark Kanda wrote: > Depending on the configuration, it can be beneficial to adjust the virtio-blk > queue size to something other than the current default of 128. Add a new > property to make the queue size configurable. > > Signed-off-by: Mark Kanda <mark.kanda@oracle.com> > Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> > Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> > Reviewed-by: Ameya More <ameya.more@oracle.com> > --- > hw/block/virtio-blk.c | 7 ++++++- > include/hw/virtio/virtio-blk.h | 1 + > 2 files changed, 7 insertions(+), 1 deletion(-) Please see commit 9b02e1618cf26aa52cf786f215d757506dda14f8 ("virtio-net: enable configurable tx queue size") for additional considerations. QEMU's virtio implementation hardcodes the maximum queue size at 1024 and this limit must be checked. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 455 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size 2017-12-06 19:53 [Qemu-devel] [PATCH 0/2] virtio-blk: miscellaneous changes Mark Kanda 2017-12-06 19:54 ` [Qemu-devel] [PATCH 1/2] virtio-blk: make queue size configurable Mark Kanda @ 2017-12-06 19:54 ` Mark Kanda 2017-12-06 20:41 ` Martin K. Petersen 2017-12-08 10:13 ` Stefan Hajnoczi 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Mark Kanda 2 siblings, 2 replies; 12+ messages in thread From: Mark Kanda @ 2017-12-06 19:54 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda virtio-blk logical block size should never be larger than physical block size because it doesn't make sense to have such configurations. QEMU doesn't have a way to effectively express this condition; the best it can do is report the physical block exponent as 0 - indicating the logical block size equals the physical block size. This is identical to commit 3da023b5827543ee4c022986ea2ad9d1274410b2 but applied to virtio-blk (instead of virtio-scsi). Signed-off-by: Mark Kanda <mark.kanda@oracle.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Reviewed-by: Ameya More <ameya.more@oracle.com> --- hw/block/virtio-blk.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 002c56f..acfca78 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -949,6 +949,13 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) } blkconf_blocksizes(&conf->conf); + if (conf->conf.logical_block_size > + conf->conf.physical_block_size) { + error_setg(errp, + "logical_block_size > physical_block_size not supported"); + return; + } + virtio_init(vdev, "virtio-blk", VIRTIO_ID_BLOCK, sizeof(struct virtio_blk_config)); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size 2017-12-06 19:54 ` [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda @ 2017-12-06 20:41 ` Martin K. Petersen 2017-12-08 10:13 ` Stefan Hajnoczi 1 sibling, 0 replies; 12+ messages in thread From: Martin K. Petersen @ 2017-12-06 20:41 UTC (permalink / raw) To: Mark Kanda Cc: qemu-block, qemu-devel, stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum Mark, > virtio-blk logical block size should never be larger than physical block > size because it doesn't make sense to have such configurations. QEMU doesn't > have a way to effectively express this condition; the best it can do is > report the physical block exponent as 0 - indicating the logical block size > equals the physical block size. > > This is identical to commit 3da023b5827543ee4c022986ea2ad9d1274410b2 > but applied to virtio-blk (instead of virtio-scsi). Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> -- Martin K. Petersen Oracle Linux Engineering ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size 2017-12-06 19:54 ` [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda 2017-12-06 20:41 ` Martin K. Petersen @ 2017-12-08 10:13 ` Stefan Hajnoczi 1 sibling, 0 replies; 12+ messages in thread From: Stefan Hajnoczi @ 2017-12-08 10:13 UTC (permalink / raw) To: Mark Kanda Cc: qemu-block, qemu-devel, martin.petersen, konrad.wilk, ameya.more, stefanha, karl.heubaum [-- Attachment #1: Type: text/plain, Size: 843 bytes --] On Wed, Dec 06, 2017 at 01:54:01PM -0600, Mark Kanda wrote: > virtio-blk logical block size should never be larger than physical block > size because it doesn't make sense to have such configurations. QEMU doesn't > have a way to effectively express this condition; the best it can do is > report the physical block exponent as 0 - indicating the logical block size > equals the physical block size. > > This is identical to commit 3da023b5827543ee4c022986ea2ad9d1274410b2 > but applied to virtio-blk (instead of virtio-scsi). > > Signed-off-by: Mark Kanda <mark.kanda@oracle.com> > Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> > Reviewed-by: Ameya More <ameya.more@oracle.com> > --- > hw/block/virtio-blk.c | 7 +++++++ > 1 file changed, 7 insertions(+) Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 455 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes 2017-12-06 19:53 [Qemu-devel] [PATCH 0/2] virtio-blk: miscellaneous changes Mark Kanda 2017-12-06 19:54 ` [Qemu-devel] [PATCH 1/2] virtio-blk: make queue size configurable Mark Kanda 2017-12-06 19:54 ` [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda @ 2017-12-08 15:57 ` Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable Mark Kanda ` (2 more replies) 2 siblings, 3 replies; 12+ messages in thread From: Mark Kanda @ 2017-12-08 15:57 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda v2: add check for maximum queue size [Stefan] This series is for two minor virtio-blk changes. The first patch makes the virtio-blk queue size user configurable. The second patch rejects logical block size > physical block configurations (similar to a recent change in virtio-scsi). Mark Kanda (2): virtio-blk: make queue size configurable virtio-blk: reject configs with logical block size > physical block size hw/block/virtio-blk.c | 17 ++++++++++++++++- include/hw/virtio/virtio-blk.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Mark Kanda @ 2017-12-08 15:57 ` Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda 2017-12-11 10:30 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Stefan Hajnoczi 2 siblings, 0 replies; 12+ messages in thread From: Mark Kanda @ 2017-12-08 15:57 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda Depending on the configuration, it can be beneficial to adjust the virtio-blk queue size to something other than the current default of 128. Add a new property to make the queue size configurable. Signed-off-by: Mark Kanda <mark.kanda@oracle.com> Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Ameya More <ameya.more@oracle.com> --- hw/block/virtio-blk.c | 10 +++++++++- include/hw/virtio/virtio-blk.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 05d1440..fb59f57 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -928,6 +928,13 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) error_setg(errp, "num-queues property must be larger than 0"); return; } + if (!is_power_of_2(conf->queue_size) || + conf->queue_size > VIRTQUEUE_MAX_SIZE) { + error_setg(errp, "invalid queue-size property (%" PRIu16 "), " + "must be a power of 2 (max %d)", + conf->queue_size, VIRTQUEUE_MAX_SIZE); + return; + } blkconf_serial(&conf->conf, &conf->serial); blkconf_apply_backend_options(&conf->conf, @@ -953,7 +960,7 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) s->sector_mask = (s->conf.conf.logical_block_size / BDRV_SECTOR_SIZE) - 1; for (i = 0; i < conf->num_queues; i++) { - virtio_add_queue(vdev, 128, virtio_blk_handle_output); + virtio_add_queue(vdev, conf->queue_size, virtio_blk_handle_output); } virtio_blk_data_plane_create(vdev, conf, &s->dataplane, &err); if (err != NULL) { @@ -1012,6 +1019,7 @@ static Property virtio_blk_properties[] = { DEFINE_PROP_BIT("request-merging", VirtIOBlock, conf.request_merging, 0, true), DEFINE_PROP_UINT16("num-queues", VirtIOBlock, conf.num_queues, 1), + DEFINE_PROP_UINT16("queue-size", VirtIOBlock, conf.queue_size, 128), DEFINE_PROP_LINK("iothread", VirtIOBlock, conf.iothread, TYPE_IOTHREAD, IOThread *), DEFINE_PROP_END_OF_LIST(), diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h index d3c8a6f..5117431 100644 --- a/include/hw/virtio/virtio-blk.h +++ b/include/hw/virtio/virtio-blk.h @@ -39,6 +39,7 @@ struct VirtIOBlkConf uint32_t config_wce; uint32_t request_merging; uint16_t num_queues; + uint16_t queue_size; }; struct VirtIOBlockDataPlane; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 2/2] virtio-blk: reject configs with logical block size > physical block size 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable Mark Kanda @ 2017-12-08 15:57 ` Mark Kanda 2017-12-11 10:30 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Stefan Hajnoczi 2 siblings, 0 replies; 12+ messages in thread From: Mark Kanda @ 2017-12-08 15:57 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda virtio-blk logical block size should never be larger than physical block size because it doesn't make sense to have such configurations. QEMU doesn't have a way to effectively express this condition; the best it can do is report the physical block exponent as 0 - indicating the logical block size equals the physical block size. This is identical to commit 3da023b5827543ee4c022986ea2ad9d1274410b2 but applied to virtio-blk (instead of virtio-scsi). Signed-off-by: Mark Kanda <mark.kanda@oracle.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Reviewed-by: Ameya More <ameya.more@oracle.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> --- hw/block/virtio-blk.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index fb59f57..36c7608 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -952,6 +952,13 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) } blkconf_blocksizes(&conf->conf); + if (conf->conf.logical_block_size > + conf->conf.physical_block_size) { + error_setg(errp, + "logical_block_size > physical_block_size not supported"); + return; + } + virtio_init(vdev, "virtio-blk", VIRTIO_ID_BLOCK, sizeof(struct virtio_blk_config)); -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda @ 2017-12-11 10:30 ` Stefan Hajnoczi 2017-12-11 15:15 ` Mark Kanda 2 siblings, 1 reply; 12+ messages in thread From: Stefan Hajnoczi @ 2017-12-11 10:30 UTC (permalink / raw) To: Mark Kanda Cc: qemu-block, qemu-devel, konrad.wilk, martin.petersen, ameya.more, karl.heubaum [-- Attachment #1: Type: text/plain, Size: 1082 bytes --] On Fri, Dec 08, 2017 at 09:57:25AM -0600, Mark Kanda wrote: > v2: add check for maximum queue size [Stefan] > > This series is for two minor virtio-blk changes. The first patch > makes the virtio-blk queue size user configurable. The second patch > rejects logical block size > physical block configurations (similar > to a recent change in virtio-scsi). > > Mark Kanda (2): > virtio-blk: make queue size configurable > virtio-blk: reject configs with logical block size > physical block > size > > hw/block/virtio-blk.c | 17 ++++++++++++++++- > include/hw/virtio/virtio-blk.h | 1 + > 2 files changed, 17 insertions(+), 1 deletion(-) Hi Mark, Please resend as a top level email thread so the continuous integration and patch management tools will detect your patch series. From https://wiki.qemu.org/Contribute/SubmitAPatch: "Send each new revision as a new top-level thread, rather than burying it in-reply-to an earlier revision, as many reviewers are not looking inside deep threads for new patches." Thanks, Stefan [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 455 bytes --] ^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes 2017-12-11 10:30 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Stefan Hajnoczi @ 2017-12-11 15:15 ` Mark Kanda 0 siblings, 0 replies; 12+ messages in thread From: Mark Kanda @ 2017-12-11 15:15 UTC (permalink / raw) To: Stefan Hajnoczi Cc: qemu-block, qemu-devel, konrad.wilk, martin.petersen, ameya.more, karl.heubaum On 12/11/2017 4:30 AM, Stefan Hajnoczi wrote: > Hi Mark, > Please resend as a top level email thread so the continuous integration > and patch management tools will detect your patch series. Apologies. I've just resent the series. Thanks, -Mark ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes @ 2017-12-11 15:16 Mark Kanda 2017-12-11 15:16 ` [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable Mark Kanda 0 siblings, 1 reply; 12+ messages in thread From: Mark Kanda @ 2017-12-11 15:16 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda v2: add check for maximum queue size [Stefan] This series is for two minor virtio-blk changes. The first patch makes the virtio-blk queue size user configurable. The second patch rejects logical block size > physical block configurations (similar to a recent change in virtio-scsi). Mark Kanda (2): virtio-blk: make queue size configurable virtio-blk: reject configs with logical block size > physical block size hw/block/virtio-blk.c | 17 ++++++++++++++++- include/hw/virtio/virtio-blk.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) -- 1.8.3.1 ^ permalink raw reply [flat|nested] 12+ messages in thread
* [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable 2017-12-11 15:16 Mark Kanda @ 2017-12-11 15:16 ` Mark Kanda 0 siblings, 0 replies; 12+ messages in thread From: Mark Kanda @ 2017-12-11 15:16 UTC (permalink / raw) To: qemu-block, qemu-devel Cc: stefanha, konrad.wilk, martin.petersen, ameya.more, karl.heubaum, Mark Kanda Depending on the configuration, it can be beneficial to adjust the virtio-blk queue size to something other than the current default of 128. Add a new property to make the queue size configurable. Signed-off-by: Mark Kanda <mark.kanda@oracle.com> Reviewed-by: Karl Heubaum <karl.heubaum@oracle.com> Reviewed-by: Martin K. Petersen <martin.petersen@oracle.com> Reviewed-by: Ameya More <ameya.more@oracle.com> --- hw/block/virtio-blk.c | 10 +++++++++- include/hw/virtio/virtio-blk.h | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c index 05d1440..fb59f57 100644 --- a/hw/block/virtio-blk.c +++ b/hw/block/virtio-blk.c @@ -928,6 +928,13 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) error_setg(errp, "num-queues property must be larger than 0"); return; } + if (!is_power_of_2(conf->queue_size) || + conf->queue_size > VIRTQUEUE_MAX_SIZE) { + error_setg(errp, "invalid queue-size property (%" PRIu16 "), " + "must be a power of 2 (max %d)", + conf->queue_size, VIRTQUEUE_MAX_SIZE); + return; + } blkconf_serial(&conf->conf, &conf->serial); blkconf_apply_backend_options(&conf->conf, @@ -953,7 +960,7 @@ static void virtio_blk_device_realize(DeviceState *dev, Error **errp) s->sector_mask = (s->conf.conf.logical_block_size / BDRV_SECTOR_SIZE) - 1; for (i = 0; i < conf->num_queues; i++) { - virtio_add_queue(vdev, 128, virtio_blk_handle_output); + virtio_add_queue(vdev, conf->queue_size, virtio_blk_handle_output); } virtio_blk_data_plane_create(vdev, conf, &s->dataplane, &err); if (err != NULL) { @@ -1012,6 +1019,7 @@ static Property virtio_blk_properties[] = { DEFINE_PROP_BIT("request-merging", VirtIOBlock, conf.request_merging, 0, true), DEFINE_PROP_UINT16("num-queues", VirtIOBlock, conf.num_queues, 1), + DEFINE_PROP_UINT16("queue-size", VirtIOBlock, conf.queue_size, 128), DEFINE_PROP_LINK("iothread", VirtIOBlock, conf.iothread, TYPE_IOTHREAD, IOThread *), DEFINE_PROP_END_OF_LIST(), diff --git a/include/hw/virtio/virtio-blk.h b/include/hw/virtio/virtio-blk.h index d3c8a6f..5117431 100644 --- a/include/hw/virtio/virtio-blk.h +++ b/include/hw/virtio/virtio-blk.h @@ -39,6 +39,7 @@ struct VirtIOBlkConf uint32_t config_wce; uint32_t request_merging; uint16_t num_queues; + uint16_t queue_size; }; struct VirtIOBlockDataPlane; -- 1.8.3.1 ^ permalink raw reply related [flat|nested] 12+ messages in thread
end of thread, other threads:[~2017-12-11 15:15 UTC | newest] Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2017-12-06 19:53 [Qemu-devel] [PATCH 0/2] virtio-blk: miscellaneous changes Mark Kanda 2017-12-06 19:54 ` [Qemu-devel] [PATCH 1/2] virtio-blk: make queue size configurable Mark Kanda 2017-12-08 10:13 ` Stefan Hajnoczi 2017-12-06 19:54 ` [Qemu-devel] [PATCH 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda 2017-12-06 20:41 ` Martin K. Petersen 2017-12-08 10:13 ` Stefan Hajnoczi 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable Mark Kanda 2017-12-08 15:57 ` [Qemu-devel] [PATCH v2 2/2] virtio-blk: reject configs with logical block size > physical block size Mark Kanda 2017-12-11 10:30 ` [Qemu-devel] [PATCH v2 0/2] virtio-blk: miscellaneous changes Stefan Hajnoczi 2017-12-11 15:15 ` Mark Kanda 2017-12-11 15:16 Mark Kanda 2017-12-11 15:16 ` [Qemu-devel] [PATCH v2 1/2] virtio-blk: make queue size configurable Mark Kanda
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.