David Hildenbrand <david@xxxxxxxxxx> wrote:Ordinary kernel allocations (alloc_page() ...) always have to be freed via put_page() and friends. Such allocations are unmovable as default and don't require any special care.
As raised already somewhere in the whole discussion by me, the right way to
take such a long-term ping as vmsplice() does is to use
FOLL_PIN|FOLL_LONGTERM.
So the pipe infrastructure would have to be able to pin pages instead of
carrying refs on them? What about pages just allocated and added to the pipe
ring in normal pipe use?