Thread (52 messages) 52 messages, 11 authors, 2019-12-08

Re: [RFC PATCH 11/10] pipe: Add fsync() support [ver #2]

From: Andy Lutomirski <luto@amacapital.net>
Date: 2019-11-02 20:31:18
Also in: keyrings, linux-api, linux-block, linux-fsdevel, linux-usb, lkml

On Nov 2, 2019, at 12:34 PM, David Howells [off-list ref] wrote:

Linus Torvalds [off-list ref] wrote:
quoted
quoted
quoted
Similar synchronization is required for reusing memory after vmsplice()?
I don't see other way how sender could safely change these pages.
Actually, it's probably worse than that.  If the output of the pipe gets teed
or spliced somewhere else, you still don't know when the vmspliced pages are
finished with.
I sometimes wonder whether vmsplice should be disallowed or severely restricted. Even ignoring these usability issues, it makes me very uncomfortable that you can have some data queue up on a pipe, tee() it, and get *different* data in the original pipe and the teed copy because the sender used vmsplice and is messing with you.

Add in the fact that it’s not obvious that vmsplice *can* be used correctly, and I’m wondering if we should just remove it or make it just do write() under the hood.

I suppose the kernel could guarantee that it stops referring to the vmsplice source pages as soon as anything sees *or* tees the data. This way it would be, at least in principle, possible to say “hey, the pipe has consumed the first n vmspliced bytes, so I can reuse that memory”.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help