[oops, let's try sending this again with reply-all instead of reply...]

On 07/05/11 19:04, Justin T. Gibbs wrote:
>  On 7/5/11 7:14 PM, Colin Percival wrote:
>> On 06/10/11 13:30, Justin T. Gibbs wrote:
>>> On 6/9/11 9:26 PM, Colin Percival wrote:
>>>> Has anyone seen anything like this? Is it possible that there's a bug
>>>> in how our blkfront negotiates the request ring? Does anyone have
>>>> ring_pages > 1 in use?
>>> The only backend driver I know of that can support more than one ring page
>>> is FreeBSD. So, the problem likely is that blkfront is getting the
>>> negotiation wrong and only 1 page is in use.
>> Turns out that the linux backend in question really does support multiple
>> pages.
> Can you provide a source or spec reference for this driver? 

Ah, here it is, dating from 2008:

Sorry, I had several windows open and thought I was looking at kernel.org
tree commits rather than a separate patch.

> There was a
> proposal (in 2009?) to add multiple page support to the XenSource
> provided blkfront/back, but it didn't get committed to the Xen repository.
> It also doesn't use the same XenStore variables that you list.  Is this
> something Amazon developed in house?

I don't know what hand if any Amazon had in writing this, but it looks like
they've convinced at least Ubuntu and RedHat to use this version.

>> There's also an inconsistency about how multiple rings are negotiated:
>> We set:
>> * ring-pages to the number of pages blkfront wants to use
>> * ring-ref to the reference for the first page
>> * ring-refXX to the references for other pages
>> while linux sets:
>> * num-ring-pages to the number of pages blkfront wants to use
>> * ring-refXX to the page references.
> You forgot to mention that the FreeBSD driver allows request size to
> be negotiated and explicitly supports "chained" requests to break the
> 44k request size limit imposed by the original interface.

I was trying to highlight the compatibility issues, not list all the ways
that FreeBSD is superior to Linux. ;-)

>> It seems to be impossible to be compatible with both, since Linux
> interprets
>> having a value set for ring-ref to indicate that the single-ring
> protocol is
>> being used and doesn't check anything else.
> It's not "Linux".  There is no multi-page support in either the kernel.org
> hosted drivers or those in the Linux tree hosted in the official Xen
> repository.

Agreed.  But it's multiple Linux distributions (and EC2).

>> Is there any official source which defines the blkback/front protocol?
> Only the source code in the Xen repository.  Both the FreeBSD extensions
> that I did and those for the Linux system you are using are likely backwards
> compatible to the original interface, but unfortunately are not compatible
> with each other.

Yes, both versions are definitely backwards compatible.

>> Maybe
>> the right option is to have a loader tunable dev.xn.linuxback to
> control which
>> version of the protocol is used?
> What a mess.

Yep.  Mess or not, shall I go ahead with having a loader tunable control this,
or can you think of a better solution?

Colin Percival
Security Officer, FreeBSD | freebsd.org | The power to serve
Founder / author, Tarsnap | tarsnap.com | Online backups for the truly paranoid
freebsd-xen@freebsd.org mailing list
To unsubscribe, send any mail to "freebsd-xen-unsubscr...@freebsd.org"

Reply via email to