From mboxrd@z Thu Jan 1 00:00:00 1970 From: Konrad Rzeszutek Wilk Subject: Re: [RFC] Support of non-indirect grant backend on 64KB guest Date: Fri, 21 Aug 2015 12:07:52 -0400 Message-ID: <20150821160752.GF26663@l.oracle.com> References: <55D2D0C4.3070700@citrix.com> <55D61194.3080303@citrix.com> <55D67F29.4050107@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <55D67F29.4050107@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Julien Grall Cc: Ian Campbell , Stefano Stabellini , "xen-devel@lists.xen.org" , David Vrabel , Roger Pau =?iso-8859-1?Q?Monn=E9?= List-Id: xen-devel@lists.xenproject.org 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