From: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
To: "Justin T. Gibbs" <justing@spectralogic.com>
Cc: xen-devel@lists.xensource.com, Keir Fraser <keir@xen.org>
Subject: Re: [PATCH 3 of 4 v3] blkif.h: Document the RedHat and Citrix blkif multi-page ring extensions
Date: Tue, 21 Feb 2012 09:12:54 -0500 [thread overview]
Message-ID: <20120221141254.GE11950@phenom.dumpdata.com> (raw)
In-Reply-To: <09051133e2fee4f2e371.1329761244@ns1.eng.sldomain.com>
On Mon, Feb 20, 2012 at 11:07:24AM -0700, Justin T. Gibbs wrote:
> No functional changes.
>
> Signed-off-by: Justin T. Gibbs <justing@spectralogic.com>
>
> diff -r e79902456819 -r 09051133e2fe xen/include/public/io/blkif.h
> --- a/xen/include/public/io/blkif.h Mon Feb 20 10:48:09 2012 -0700
> +++ b/xen/include/public/io/blkif.h Mon Feb 20 11:02:53 2012 -0700
> @@ -67,6 +67,9 @@
> * XenStore nodes in sections marked "PRIVATE" are solely for use by the
> * driver side whose XenBus tree contains them.
> *
> + * XenStore nodes marked "DEPRECATED" in their notes section should only be
> + * used to provide interoperability with legacy implementations.
> + *
> * See the XenBus state transition diagram below for details on when XenBus
> * nodes must be published and when they can be queried.
> *
> @@ -123,12 +126,31 @@
> * of this type may still be returned at any time with the
> * BLKIF_RSP_EOPNOTSUPP result code.
> *
> + *----------------------- Request Transport Parameters ------------------------
> + *
> + * max-ring-page-order
> + * Values: <uint32_t>
> + * Default Value: 0
> + * Notes: 1, 3
> + *
> + * The maximum supported size of the request ring buffer in units of
> + * lb(machine pages). (e.g. 0 == 1 page, 1 = 2 pages, 2 == 4 pages,
> + * etc.).
> + *
> + * max-ring-pages
> + * Values: <uint32_t>
> + * Default Value: 1
> + * Notes: DEPRECATED, 2, 3
> + *
> + * The maximum supported size of the request ring buffer in units of
> + * machine pages. The value must be a power of 2.
> + *
> *------------------------- Backend Device Properties -------------------------
> *
> * discard-aligment
> * Values: <uint32_t>
> * Default Value: 0
> - * Notes: 1, 2
> + * Notes: 4, 5
> *
> * The offset, in bytes from the beginning of the virtual block device,
> * to the first, addressable, discard extent on the underlying device.
> @@ -136,7 +158,7 @@
> * discard-granularity
> * Values: <uint32_t>
> * Default Value: <"sector-size">
> - * Notes: 1
> + * Notes: 4
> *
> * The size, in bytes, of the individually addressable discard extents
> * of the underlying device.
> @@ -180,10 +202,20 @@
> *
> * ring-ref
> * Values: <uint32_t>
> + * Notes: 6
> *
> * The Xen grant reference granting permission for the backend to map
> * the sole page in a single page sized ring buffer.
> *
> + * ring-ref%u
> + * Values: <uint32_t>
> + * Notes: 6
> + *
> + * For a frontend providing a multi-page ring, a "number of ring pages"
> + * sized list of nodes, each containing a Xen grant reference granting
> + * permission for the backend to map the page of the ring located
> + * at page index "%u". Page indexes are zero based.
> + *
> * protocol
> * Values: string (XEN_IO_PROTO_ABI_*)
> * Default Value: XEN_IO_PROTO_ABI_NATIVE
> @@ -191,6 +223,25 @@
> * The machine ABI rules governing the format of all ring request and
> * response structures.
> *
> + * ring-page-order
> + * Values: <uint32_t>
> + * Default Value: 0
> + * Maximum Value: MAX(ffs(max-ring-pages) - 1, max-ring-page-order)
> + * Notes: 1, 3
> + *
> + * The size of the frontend allocated request ring buffer in units
> + * of lb(machine pages). (e.g. 0 == 1 page, 1 = 2 pages, 2 == 4 pages,
> + * etc.).
> + *
> + * num-ring-pages
> + * Values: <uint32_t>
> + * Default Value: 1
> + * Maximum Value: MAX(max-ring-pages,(0x1 << max-ring-page-order))
> + * Notes: DEPRECATED, 2, 3
> + *
> + * The size of the frontend allocated request ring buffer in units of
> + * machine pages. The value must be a power of 2.
> + *
> *------------------------- Virtual Device Properties -------------------------
> *
> * device-type
> @@ -208,12 +259,26 @@
> *
> * Notes
> * -----
> - * (1) Devices that support discard functionality may internally allocate
> + * (1) Multi-page ring buffer scheme first developed in the Citrix XenServer
> + * PV drivers.
> + * (2) Multi-page ring buffer scheme first used in some RedHat distributions
Red Hat.
> + * including a distribution deployed on certain nodes of the Amazon
> + * EC2 cluster.
> + * (3) Support for multi-page ring buffers was implemented independently,
> + * in slightly different forms, by both Citrix and RedHat/Amazon.
Red Hat.
> + * For full interoperability, block front and backends should publish
> + * identical ring parameters, adjusted for unit differences, to the
> + * XenStore nodes used in both schemes.
> + * (4) Devices that support discard functionality may internally allocate
> * space (discardable extents) in units that are larger than the
> * exported logical block size.
> - * (2) The discard-alignment parameter allows a physical device to be
> + * (5) The discard-alignment parameter allows a physical device to be
> * partitioned into virtual devices that do not necessarily begin or
> * end on a discardable extent boundary.
> + * (6) When there is only a single page allocated to the request ring,
> + * 'ring-ref' is used to communicate the grant reference for this
> + * page to the backend. When using a multi-page ring, the 'ring-ref'
> + * node is not created. Instead 'ring-ref0' - 'ring-refN' are used.
> */
>
> /*
> @@ -231,20 +296,26 @@
> * o Query virtual device o Query backend device identification
> * properties. data.
> * o Setup OS device instance. o Open and validate backend device.
> - * o Publish backend features.
> + * o Publish backend features and
> + * transport parameters.
> * |
> * |
> * V
> * XenbusStateInitWait
> *
> - * o Query backend features.
> + * o Query backend features and
> + * transport parameters.
> * o Allocate and initialize the
> * request ring.
> + * o Publish transport parameters
> + * that will be in effect during
> + * this connection.
> * |
> * |
> * V
> * XenbusStateInitialised
> *
> + * o Query frontend transport parameters.
> * o Connect to the request ring and
> * event channel.
> * o Publish backend device properties.
> @@ -261,20 +332,26 @@
> * V
> * XenbusStateConnected
> *
> - * Note: Drivers that do not support any optional features can skip certain
> - * states in the state machine:
> + * Note: Drivers that do not support any optional features, or the negotiation
> + * of transport parameters, can skip certain states in the state machine:
> *
> * o A frontend may transition to XenbusStateInitialised without
> - * waiting for the backend to enter XenbusStateInitWait.
> + * waiting for the backend to enter XenbusStateInitWait. In this
> + * case, default transport parameters are in effect and any
> + * transport parameters published by the frontend must contain
> + * their default values.
> *
> * o A backend may transition to XenbusStateInitialised, bypassing
> * XenbusStateInitWait, without waiting for the frontend to first
> - * enter the XenbusStateInitialised state.
> + * enter the XenbusStateInitialised state. In this case, default
> + * transport parameters are in effect and any transport parameters
> + * published by the backend must contain their default values.
> *
> - * Drivers that support optional features must tolerate these additional
> - * state transition paths. In general this means performing the work of
> - * any skipped state transition, if it has not already been performed,
> - * in addition to the work associated with entry into the current state.
> + * Drivers that support optional features and/or transport parameter
> + * negotiation must tolerate these additional state transition paths.
> + * In general this means performing the work of any skipped state
> + * transition, if it has not already been performed, in addition to the
> + * work associated with entry into the current state.
> */
>
> /*
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@lists.xen.org
> http://lists.xensource.com/xen-devel
next prev parent reply other threads:[~2012-02-21 14:12 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-20 18:07 [PATCH 0 of 4 v3] blkif.h: Document protocol and existing extensions Justin T. Gibbs
2012-02-20 18:07 ` [PATCH 1 of 4 v3] blkif.h: Miscelaneous style fixes Justin T. Gibbs
2012-02-21 14:10 ` Konrad Rzeszutek Wilk
2012-02-21 14:15 ` Ian Campbell
2012-02-20 18:07 ` [PATCH 2 of 4 v3] blkif.h: Provide more complete documentation of the blkif interface Justin T. Gibbs
2012-02-21 14:10 ` Konrad Rzeszutek Wilk
2012-02-21 20:59 ` Justin T. Gibbs
2012-02-21 21:36 ` Konrad Rzeszutek Wilk
2012-02-22 11:14 ` Ian Campbell
2012-02-23 18:50 ` Konrad Rzeszutek Wilk
2012-02-23 22:41 ` Justin T. Gibbs
2012-02-21 14:27 ` Ian Campbell
2012-02-21 18:14 ` Justin T. Gibbs
2012-02-21 19:41 ` Ian Campbell
2012-02-20 18:07 ` [PATCH 3 of 4 v3] blkif.h: Document the RedHat and Citrix blkif multi-page ring extensions Justin T. Gibbs
2012-02-21 14:12 ` Konrad Rzeszutek Wilk [this message]
2012-02-21 14:32 ` Ian Campbell
2012-02-20 18:07 ` [PATCH 4 of 4 v3] blkif.h: Define and document the request number/size/segments extension Justin T. Gibbs
2012-02-21 14:22 ` Konrad Rzeszutek Wilk
2012-02-21 18:11 ` Justin T. Gibbs
2012-02-21 14:38 ` Ian Campbell
2012-02-21 18:03 ` Justin T. Gibbs
2012-02-21 19:42 ` Ian Campbell
2012-02-21 14:02 ` [PATCH 0 of 4 v3] blkif.h: Document protocol and existing extensions Konrad Rzeszutek Wilk
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20120221141254.GE11950@phenom.dumpdata.com \
--to=konrad.wilk@oracle.com \
--cc=justing@spectralogic.com \
--cc=keir@xen.org \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.