From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [PATCH v4 01/10] xen/blkif: document blkif multi-queue/ring extension Date: Tue, 3 Nov 2015 13:01:22 -0500 Message-ID: <20151103180122.GC28527@char.us.oracle.com> References: <1446438106-20171-1-git-send-email-bob.liu@oracle.com> <1446438106-20171-2-git-send-email-bob.liu@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <1446438106-20171-2-git-send-email-bob.liu@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Bob Liu Cc: jonathan.davies@citrix.com, felipe.franciosi@citrix.com, rafal.mielniczuk@citrix.com, linux-kernel@vger.kernel.org, xen-devel@lists.xen.org, axboe@fb.com, david.vrabel@citrix.com, avanzini.arianna@gmail.com, roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org On Mon, Nov 02, 2015 at 12:21:37PM +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 I queued this up, but obviously we need to wait for the Xen version to be accepted. > -- > v2: > Add descriptions together with multi-page ring buffer. > --- > include/xen/interface/io/blkif.h | 48 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 48 insertions(+) > > diff --git a/include/xen/interface/io/blkif.h b/include/xen/interface/io/blkif.h > index c33e1c4..8b8cfad 100644 > --- a/include/xen/interface/io/blkif.h > +++ b/include/xen/interface/io/blkif.h > @@ -28,6 +28,54 @@ typedef uint16_t blkif_vdev_t; > typedef uint64_t blkif_sector_t; > > /* > + * 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 = "" > + * /local/domain/1/device/vbd/0/queue-0/event-channel = "" > + * /local/domain/1/device/vbd/0/queue-1 = "" > + * /local/domain/1/device/vbd/0/queue-1/ring-ref = "" > + * /local/domain/1/device/vbd/0/queue-1/event-channel = "" > + * > + * 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 = "" > + * /local/domain/1/device/vbd/0/queue-0/ring-ref1 = "" > + * /local/domain/1/device/vbd/0/queue-0/event-channel = "" > + * /local/domain/1/device/vbd/0/queue-1 = "" > + * /local/domain/1/device/vbd/0/queue-1/ring-ref0 = "" > + * /local/domain/1/device/vbd/0/queue-1/ring-ref1 = "" > + * /local/domain/1/device/vbd/0/queue-1/event-channel = "" > + * > + */ > + > +/* > * REQUEST CODES. > */ > #define BLKIF_OP_READ 0 > -- > 1.8.3.1 >