Discussion of the VIRTIO specification
 help / color / mirror / Atom feed
* [virtio-comment] [PATCH] block: Add multiqueue
@ 2019-09-17  7:18 Eugenio Pérez
  2019-09-18 10:24 ` Stefan Hajnoczi
  0 siblings, 1 reply; 3+ messages in thread
From: Eugenio Pérez @ 2019-09-17  7:18 UTC (permalink / raw)
  To: virtio-comment

The spec miss that field. Add the field, some description around.

I've followed the network device's multiqueue mentions, and copied /
adapted when needed.

Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
---
 content.tex | 24 ++++++++++++++++++++----
 1 file changed, 20 insertions(+), 4 deletions(-)

diff --git a/content.tex b/content.tex
index 37a2190..85e500b 100644
--- a/content.tex
+++ b/content.tex
@@ -3822,7 +3822,7 @@ \section{Block Device}\label{sec:Device Types / Block Device}
 
 The virtio block device is a simple virtual block device (ie.
 disk). Read and write requests (and other exotic requests) are
-placed in the queue, and serviced (probably out of order) by the
+placed in one of its queues, and serviced (probably out of order) by the
 device except where noted.
 
 \subsection{Device ID}\label{sec:Device Types / Block Device / Device ID}
@@ -3830,9 +3830,14 @@ \subsection{Device ID}\label{sec:Device Types / Block Device / Device ID}
 
 \subsection{Virtqueues}\label{sec:Device Types / Block Device / Virtqueues}
 \begin{description}
-\item[0] requestq
+\item[0] requestq1
+\item[\ldots]
+\item[N] requestqN
 \end{description}
 
+ N=1 if VIRTIO_BLK_F_MQ is not negotiated, otherwise N is set by
+ \field{num_queues}.
+
 \subsection{Feature bits}\label{sec:Device Types / Block Device / Feature bits}
 
 \begin{description}
@@ -3857,6 +3862,8 @@ \subsection{Feature bits}\label{sec:Device Types / Block Device / Feature bits}
 \item[VIRTIO_BLK_F_CONFIG_WCE (11)] Device can toggle its cache between writeback
     and writethrough modes.
 
+\item[VIRTIO_BLK_F_MQ (12)] Device supports multiqueue.
+
 \item[VIRTIO_BLK_F_DISCARD (13)] Device can support discard command, maximum
     discard sectors size in \field{max_discard_sectors} and maximum discard
     segment number in \field{max_discard_seg}.
@@ -3885,6 +3892,9 @@ \subsection{Device configuration layout}\label{sec:Device Types / Block Device /
 present. The availability of the others all depend on various feature
 bits as indicated above.
 
+The field \field{num_queues} only exists if VIRTIO_BLK_F_MQ is set. This field specifies
+the number of queues.
+
 The parameters in the configuration space of the device \field{max_discard_sectors}
 \field{discard_sector_alignment} are expressed in 512-byte units if the
 VIRTIO_BLK_F_DISCARD feature bit is negotiated. The \field{max_write_zeroes_sectors}
@@ -3913,7 +3923,8 @@ \subsection{Device configuration layout}\label{sec:Device Types / Block Device /
                 le32 opt_io_size;
         } topology;
         u8 writeback;
-        u8 unused0[3];
+        u8 unused0;
+        u16 num_queues;
         le32 max_discard_sectors;
         le32 max_discard_seg;
         le32 discard_sector_alignment;
@@ -3973,6 +3984,11 @@ \subsection{Device Initialization}\label{sec:Device Types / Block Device / Devic
     \field{max_write_zeroes_sectors} and \field{max_write_zeroes_seg} can
     be read to determine the maximum write zeroes sectors and maximum
     number of write zeroes segments for the block driver to use.
+
+\item If the VIRTIO_BLK_F_MQ feature is negotiated, \field{num_queues} field
+    can be read to determine the number of queues. The driver does not use more
+    queues than guest's number of CPUs.
+
 \end{enumerate}
 
 \drivernormative{\subsubsection}{Device Initialization}{Device Types / Block Device / Device Initialization}
@@ -4024,7 +4040,7 @@ \subsubsection{Legacy Interface: Device Initialization}\label{sec:Device Types /
 
 \subsection{Device Operation}\label{sec:Device Types / Block Device / Device Operation}
 
-The driver queues requests to the virtqueue, and they are used by
+The driver queues requests to the virtqueues, and they are used by
 the device (not necessarily in order). Each request is of form:
 
 \begin{lstlisting}
-- 
2.16.5


This publicly archived list offers a means to provide input to the
OASIS Virtual I/O Device (VIRTIO) TC.

In order to verify user consent to the Feedback License terms and
to minimize spam in the list archive, subscription is required
before posting.

Subscribe: virtio-comment-subscribe@lists.oasis-open.org
Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org
List help: virtio-comment-help@lists.oasis-open.org
List archive: https://lists.oasis-open.org/archives/virtio-comment/
Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf
List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists
Committee: https://www.oasis-open.org/committees/virtio/
Join OASIS: https://www.oasis-open.org/join/


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [virtio-comment] [PATCH] block: Add multiqueue
  2019-09-17  7:18 [virtio-comment] [PATCH] block: Add multiqueue Eugenio Pérez
@ 2019-09-18 10:24 ` Stefan Hajnoczi
  2019-09-23 16:15   ` Eugenio Perez Martin
  0 siblings, 1 reply; 3+ messages in thread
From: Stefan Hajnoczi @ 2019-09-18 10:24 UTC (permalink / raw)
  To: Eugenio Pérez; +Cc: virtio-comment

[-- Attachment #1: Type: text/plain, Size: 822 bytes --]

On Tue, Sep 17, 2019 at 09:18:12AM +0200, Eugenio Pérez wrote:
> @@ -3973,6 +3984,11 @@ \subsection{Device Initialization}\label{sec:Device Types / Block Device / Devic
>      \field{max_write_zeroes_sectors} and \field{max_write_zeroes_seg} can
>      be read to determine the maximum write zeroes sectors and maximum
>      number of write zeroes segments for the block driver to use.
> +
> +\item If the VIRTIO_BLK_F_MQ feature is negotiated, \field{num_queues} field
> +    can be read to determine the number of queues. The driver does not use more
> +    queues than guest's number of CPUs.

Why state that "the driver does not use more queues than guest's number
of CPUs"?  This seems like an implementation detail and it's up to the
driver author to decide the most effective way of using multiqueue.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [virtio-comment] [PATCH] block: Add multiqueue
  2019-09-18 10:24 ` Stefan Hajnoczi
@ 2019-09-23 16:15   ` Eugenio Perez Martin
  0 siblings, 0 replies; 3+ messages in thread
From: Eugenio Perez Martin @ 2019-09-23 16:15 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: virtio-comment

You are right, I understood it as mandatory.

Version 2 of the patch sent.

Thanks!

On Wed, Sep 18, 2019 at 12:24 PM Stefan Hajnoczi <stefanha@redhat.com> wrote:
>
> On Tue, Sep 17, 2019 at 09:18:12AM +0200, Eugenio Pérez wrote:
> > @@ -3973,6 +3984,11 @@ \subsection{Device Initialization}\label{sec:Device Types / Block Device / Devic
> >      \field{max_write_zeroes_sectors} and \field{max_write_zeroes_seg} can
> >      be read to determine the maximum write zeroes sectors and maximum
> >      number of write zeroes segments for the block driver to use.
> > +
> > +\item If the VIRTIO_BLK_F_MQ feature is negotiated, \field{num_queues} field
> > +    can be read to determine the number of queues. The driver does not use more
> > +    queues than guest's number of CPUs.
>
> Why state that "the driver does not use more queues than guest's number
> of CPUs"?  This seems like an implementation detail and it's up to the
> driver author to decide the most effective way of using multiqueue.

This publicly archived list offers a means to provide input to the
OASIS Virtual I/O Device (VIRTIO) TC.

In order to verify user consent to the Feedback License terms and
to minimize spam in the list archive, subscription is required
before posting.

Subscribe: virtio-comment-subscribe@lists.oasis-open.org
Unsubscribe: virtio-comment-unsubscribe@lists.oasis-open.org
List help: virtio-comment-help@lists.oasis-open.org
List archive: https://lists.oasis-open.org/archives/virtio-comment/
Feedback License: https://www.oasis-open.org/who/ipr/feedback_license.pdf
List Guidelines: https://www.oasis-open.org/policies-guidelines/mailing-lists
Committee: https://www.oasis-open.org/committees/virtio/
Join OASIS: https://www.oasis-open.org/join/


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2019-09-23 16:16 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-09-17  7:18 [virtio-comment] [PATCH] block: Add multiqueue Eugenio Pérez
2019-09-18 10:24 ` Stefan Hajnoczi
2019-09-23 16:15   ` Eugenio Perez Martin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox