Thread (24 messages) 24 messages, 5 authors, 2016-03-22

Re: [Lsf-pc] [LSF/MM ATTEND] block: multipage bvecs

From: Boaz Harrosh <hidden>
Date: 2016-02-29 10:16:50

On 02/28/2016 06:08 PM, Christoph Hellwig wrote:
On Sun, Feb 28, 2016 at 01:17:43PM +0200, Boaz Harrosh wrote:
quoted
I don't know if you ever tried it but I did. If I take a regular
SSD disk or a PCIE flash card that I have in my machine and
I stick a pointer to a page and bv_len = PAGE_SIZE * 8 and call
submit_bio, I get 8 pages worth of IO with a single bvec and it
all just works.
No, it will break in all kinds of places.  Also you really should
never just setup bvecs yourself, please always use bio_add_page!
Guys when did you ever stop playing and became so serious? Of course
I never do that in submitted code. But I do like to experiment from
time to time and play around, I like it when my VM crashes ;-)

That said when did you last look at bio_add_page() it will just work
as well. (Specially lately since the limits are checked later ever
since bios can split)

So if you have a real hard stair you'll see that we consider bv_len
everywhere and the PAGE_SIZE assumption is more when allocating array
sizes and things like that. Again it will break on SW drivers like
brd and scsi_debug. But will currently work on anything going through
sg-lists and DMA mapping.

This is not the first time in the kernel that a page* and large
size denotes a set of contiguous pages, BTW

Cheers
Boaz
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help