[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] PAGE_SIZE (64KB), while block driver 'struct request' deals with < PAGE_SIZE (up to 44Kb). Was:Re: [RFC] Support of non-indirect grant backend on 64KB guest
On Fri, Aug 21, 2015 at 05:08:35PM +0100, David Vrabel wrote: > On 21/08/15 17:05, Konrad Rzeszutek Wilk wrote: > > > > I have to concur with that. We can't mandate that ARM 64k page MUST use > > indirect descriptors. > > Then it has to be fixed in the block layer to allow < PAGE_SIZE segments > and to get the block layer to split requests for blkfront. Hey Jens, I am hoping you can help us figure this problem out. The Linux ARM is capable of using 4KB pages and 64KB pages. Our block driver (xen-blkfront) was built with 4KB pages in mind and without using any fancy flags (which some backends lack) the maximum amount of I/O it can fit on a ring is 44KB. This has the unfortunate effect that when the xen-blkfront gets an 'struct request' it can have on page (64KB) and it can't actually fit it on the ring! And the lowest segment size it advertises is PAGE_SIZE (64KB). I believe Julien (who found this) tried initially advertising smaller segment size than PAGE_SIZE (32KB). However looking at __blk_segment_map_sg it looks to assume smallest size is PAGE_SIZE so that would explain why it did not work. One wya to make this work is for the driver (xen-blkfront) to split the 'struct request' I/O in two internal requests. But this has to be a normal problem. Surely there are other drivers (MMC?) that can't handle PAGE_SIZE and have to break their I/Os. Would it make sense for the common block code to be able to deal with this? Thank you! _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |