[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH] blkif.h: document blkif multi-queue/ring extension



On Thu, Oct 29, 2015 at 10:37:39AM +0800, Bob Liu wrote:
> Document the multi-queue/ring feature in terms of XenStore keys to be written
> by the backend and by the frontend.
> 
> Signed-off-by: Bob Liu <bob.liu@xxxxxxxxxx>
> ---
>  xen/include/public/io/blkif.h |   48 
> +++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
> 
> diff --git a/xen/include/public/io/blkif.h b/xen/include/public/io/blkif.h
> index 8f0f9a6..f7823bb 100644
> --- a/xen/include/public/io/blkif.h
> +++ b/xen/include/public/io/blkif.h
> @@ -394,6 +394,54 @@
>   */
>  
>  /*
> + * Multiple hardware queues/rings:
> + * If supported, the backend will write the key "multi-queue-max-queues" to
> + * the directory for that vbd, and set its value to the maximum supported
> + * number of queues.
> + * Frontends that are aware of this feature and wish to use it can write the
> + * key "multi-queue-num-queues" with the number they wish to use, which must 
> be
> + * greater than zero, and no more than the value reported by the backend in
> + * "multi-queue-max-queues".
> + *
> + * For frontends requesting just one queue, the usual event-channel and
> + * ring-ref keys are written as before, simplifying the backend processing
> + * to avoid distinguishing between a frontend that doesn't understand the
> + * multi-queue feature, and one that does, but requested only one queue.
> + *
> + * Frontends requesting two or more queues must not write the toplevel
> + * event-channel and ring-ref keys, instead writing those keys under sub-keys
> + * having the name "queue-N" where N is the integer ID of the queue/ring for
> + * which those keys belong. Queues are indexed from zero.
> + * For example, a frontend with two queues must write the following set of
> + * queue-related keys:
> + *
> + * /local/domain/1/device/vbd/0/multi-queue-num-queues = "2"
> + * /local/domain/1/device/vbd/0/queue-0 = ""
> + * /local/domain/1/device/vbd/0/queue-0/ring-ref = "<ring-ref>"

<ring-ref#0>
> + * /local/domain/1/device/vbd/0/queue-0/event-channel = "<evtchn>"
<evtchn#0>

> + * /local/domain/1/device/vbd/0/queue-1 = ""
> + * /local/domain/1/device/vbd/0/queue-1/ring-ref = "<ring-ref>"

<ring-ref#1>
> + * /local/domain/1/device/vbd/0/queue-1/event-channel = "<evtchn>"
<evtchn#1>

So that one can distinguish that the ring-reg / event channel for
each queue MUST not be the same. Maybe even spell it out.

> + *
> + * It is also possible to use multiple queues/rings together with
> + * feature multi-page ring buffer.
> + * For example, a frontend requests two queues/rings and the size of each 
> ring
> + * buffer is two pages must write the following set of related keys:
> + *
> + * /local/domain/1/device/vbd/0/multi-queue-num-queues = "2"
> + * /local/domain/1/device/vbd/0/ring-page-order = "1"
> + * /local/domain/1/device/vbd/0/queue-0 = ""
> + * /local/domain/1/device/vbd/0/queue-0/ring-ref0 = "<ring-ref0>"

s/ref0/ref#0
> + * /local/domain/1/device/vbd/0/queue-0/ring-ref1 = "<ring-ref1>"

s/ref1/ref#1

> + * /local/domain/1/device/vbd/0/queue-0/event-channel = "<evtchn>"

evtchn#0
> + * /local/domain/1/device/vbd/0/queue-1 = ""
> + * /local/domain/1/device/vbd/0/queue-1/ring-ref0 = "<ring-ref0>"

s/ref0/ref#2/
> + * /local/domain/1/device/vbd/0/queue-1/ring-ref1 = "<ring-ref1>"
s/ref1/ref#3/

> + * /local/domain/1/device/vbd/0/queue-1/event-channel = "<evtchn>"

s/evtchn/evtchn#1/

> + *
> + */
> +
> +/*
>   * STATE DIAGRAMS
>   *
>   
> *****************************************************************************
> -- 
> 1.7.10.4
> 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.