From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Grall Subject: Re: [RFC] Support of non-indirect grant backend on 64KB guest Date: Thu, 20 Aug 2015 18:30:17 -0700 Message-ID: <55D67F29.4050107@citrix.com> References: <55D2D0C4.3070700@citrix.com> <55D61194.3080303@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii"; Format="flowed" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <55D61194.3080303@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: David Vrabel , =?windows-1252?Q?Roger_Pau_?= =?windows-1252?Q?Monn=E9?= , Stefano Stabellini , Konrad Rzeszutek Wilk , Ian Campbell , "xen-devel@lists.xen.org" List-Id: xen-devel@lists.xenproject.org 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. Cheers, -- Julien Grall