breakage in blkfront with ring_pages > 1

Colin Percival cperciva at freebsd.org
Wed Jul 6 01:14:23 UTC 2011


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.
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.

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.

Is there any official source which defines the blkback/front protocol?  Maybe
the right option is to have a loader tunable dev.xn.linuxback to control which
version of the protocol is used?

-- 
Colin Percival
Security Officer, FreeBSD | freebsd.org | The power to serve
Founder / author, Tarsnap | tarsnap.com | Online backups for the truly paranoid


More information about the freebsd-xen mailing list