Re: [PATCH 0/3] vmsplice: make vmsplice a trivial wrapper for preadv2/pwritev2
Askar Safin <[email protected]>
| Newsgroups | org.kernel.vger.linux-api,dev.linux.lists.patches,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.netdev,org.kvack.linux-mm |
|---|---|
| Message-ID | <CAPnZJGD5QR5jrNMAem7FjMRTtw+Ue+jm7Dc2Kp8Lcjj+9TDw_Q@mail.gmail.com> |
On Sun, May 31, 2026 at 11:54 AM Pedro Falcato <[email protected]> wrote: > So, you took an ongoing discussion with an ongoing RFC patchset, and you > decided to reimplement part of the idea on your own, as a concurrent patchset. Yes. But I propose an alternative solution to this problem. Brauner said in discussion for your patchset: "So I'm not very likely to pick this up as is". So, I decided to submit another solution. Pedro, I'm not trying to insult you. Other kernel developers will decide which of these two solutions they like more. Many people in discussion of your patchset said how they dislike splice/vmsplice, and especially vmsplice. Hellwig said "vmsplice is the worst". Brauner, Hellwig, Horn said that they dislike vmsplice. They said that vmsplice in its current form should not be used, and that it is broken. Despite all these problems nobody managed to fix vmsplice in all these years. So I propose just to effectively remove it. You may think that I just saw a recent discussion and decided to jump in. No. splice/vmsplice is my topic of interest for many years. You can verify this by searching "f:Askar splice" on lore.kernel.org . I simply decided that given recent vulnerabilities now is the perfect time to solve all these vmsplice problems once and for all. I explained my position here: https://lore.kernel.org/all/[email protected]/ . Nobody answered, so I just posted this patchset. If my patchset is applied, then I will try to deal with splice-pagecache-to-pipe somehow, probably by removing it, too. :) I decided first to deal with vmsplice, because it seems to be easier problem. > > vmsplice(fd, vec, vlen, vmsplice_flags) will > > be equivalent to preadv2(fd, vec, vlen, -1, rw_flags) if you have > > readable pipe and to pwritev2(fd, vec, vlen, -1, rw_flags) if you have > > writable pipe. > > This does not work. https://codesearch.debian.net/search?q=vmsplice%28&literal=1 > There are users. Yes, they are. But my solution is compatible. vmsplice is simply performance optimization. vmsplice will work just as before, but slower. And, most importantly, vmsplice design problems will be gone (nobody managed to fix them anyway for all these years). -- Askar Safin