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

Re: [Xen-devel] [RFC] Support of non-indirect grant backend on 64KB guest

On Thu, Aug 20, 2015 at 06:30:17PM -0700, Julien Grall wrote:
> On 20/08/2015 10:42, David Vrabel wrote:
> >>When using 64KB page, a Linux block request (struct *request) may
> >>contain up to 64KB of data. This is because the block segment size
> >>must at least be the size of a Linux page.
> >
> >You should ensure you configure the request queue with the limits that
> >are currently supported.  In particular:
> >
> >     /* Each segment in a request is up to an aligned page in
> >            size. */
> >     blk_queue_segment_boundary(rq, PAGE_SIZE - 1);
> >     blk_queue_max_segment_size(rq, PAGE_SIZE);
> >
> >Is obviously wrong with PAGE_SIZE > 44 KiB.
> >
> >Get the block later to split requests and don't do it in blkfront.
> I may not have been enough clear in the paragraph you quoted. I said that
> the minimum size supported by the block framework is a linux page size. It
> means that if you pass a value smaller than that it will replace with the
> page linux granularity.
> It would have been handy that the block framework supports smaller size but
> it's not the case, give a look to the implementation of both function.

From a block API size one can argue that the driver is doing something
wrong by requiring < PAGE_SIZE requests. It is kind of implied that all
the drivers are able to manage this and break up an 'struct request'
in multiple IO commands if it needs to.

> Cheers,
> -- 
> Julien Grall

Xen-devel mailing list



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