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

Re: [Xen-devel] [PATCH 4 of 5] blkif.h: Document the RedHat and Citrix blkif multi-page ring extensions

On Feb 9, 2012, at 2:15 AM, Jan Beulich wrote:

>>>> On 08.02.12 at 23:00, "Justin T. Gibbs" <justing@xxxxxxxxxxxxxxxx> wrote:
>> On Feb 3, 2012, at 9:12 AM, Jan Beulich wrote:
>>>> On 03.02.12 at 16:19, Justin Gibbs <justing@xxxxxxxxxxxxxxxx> wrote:
>>>> However, if this is the rule, both types of "max ring size" values
>>>> are "in effect" even if a back-end does not provide them both.  So
>>>> how do you resolve the conflict?  A fully interoperable front should
>>>> allocate the largest possible ring and advertise that size through
>>>> both mechanisms in a fully consistent manner. That's what I was
>>>> trying to indicate by writing the spec this way.
>>> Hmm, I would think a fully compatible frontend should bail (revert to
>>> single page ring) on inconsistent max-ring-pages and
>>> max-ring-page-order, if both are provided by the backend. The limit
>>> for ring-pages should always be max-ring-pages, while the one for
>>> ring-page-order should always be max-ring-page-order. Any mixture
>>> is an error, unless both values are consistent with one another.
>>> Jan
>> Mandating that a front-end publish inconsistent values to the
>> XenStore would be a mistake.  Having the front-end only publish the
>> set of nodes that are recognized by the back-end just adds code
>> complexity with no associated increase in functionality.  You
>> actually would lose the ability to tell that the driver supports
>> both schemes.
>> To clarify what I mean by that, consider the current state of
>> back-ends in the world.  They fall into 1 of 4 camps:
>> 1. No multi-page ring support
>> 2. "Citrix style" multi-page ring support.
>> 3. "Red Hat style" multi-page ring support.
>> 4. "Both styles" multi-page ring support.
>> In cases 1-3, one or both of the max-ring-page* nodes is not present.
>> Per the currently proposed spec, this means that these nodes have
>> their default values.  You seem to be advocating that the front-end
>> write the default values into its corresponding node.  For cases 2
>> and 3, this would lead to contradictory values in the XenStore (e.g.
>> ring-page-order=0 and ring-pages=4).  This will not confuse the
>> back-end, but could confuse a human.
> No, that's not what I intended to propose. Instead, I'd see the
> frontend write consistent values (and best always write both node
> flavors) if at least one of the protocols is supported by the backend.

Then your desire is already allowed by the maximum values for
these nodes in the current spec.  I will clarify the notes section to
say that, if both node types are supported by a driver, both node
types should be written with consistent values.

> I'm only suggesting that the frontend should not use either multi-
> page rings at all if it finds both backend node flavors present yet
> having inconsistent values (i.e. absence of either [but not both]
> values does *not* count as inconsistent, and hence a single absent
> node not implicitly assuming its default value).

I think that's a perfectly reasonable behavior, but not the only
reasonable behavior.  If I need to write a front or back end driver that
is more tolerant in order to have optimum performance with an
existing driver that I do not control, the spec should allow me to do this.

Xen-devel mailing list



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