On Sun, Sep 18, 2016 at 12:31 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > FWIW, I'm not sure if skb_splice_bits() can't land us in trouble; fragments > might come from compound pages and I'm not entirely convinced that we won't > end up with coalesced fragments putting more than PAGE_SIZE into a single > pipe_buffer. And that could badly confuse a bunch of code. The pipe buffer code is actually *supposed* to handle any size allocations at all. They should *not* be limited by pages, exactly because the data can come from huge-pages or just multi-page allocations. It's definitely possible with networking, and networking is one of the *primary* targets of splice in many ways. So if the splice code ends up being confused by "this is not just inside a single page", then the splice code is buggy, I think. Why would splice_write() cases be confused anyway? A filesystem needs to be able to handle the case of "this needs to be split" regardless, since even if the source buffer were to fit in a page, the offset might obviously mean that the target won't fit in a page. Now, if you decide that you want to make the iterator always split those possibly big cases and never have big iovec entries, I guess that would potentially be ok. But my initial reaction is that they are perfectly normal and should be handled normally, and any code that depends on a splice buffer fitting in one page is just buggy and should be fixed. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html