Re: [PATCH 0/3] vmsplice: make vmsplice a trivial wrapper for preadv2/pwritev2
Andrei Vagin <[email protected]> Wed, 17 Jun 2026 12:57:14 -0700
| Newsgroups | dev.linux.lists.criu,dev.linux.lists.fuse-devel,dev.linux.lists.patches,org.kernel.vger.linux-api,org.kernel.vger.linux-fsdevel,org.kernel.vger.linux-kernel,org.kernel.vger.netdev,org.kvack.linux-mm |
|---|---|
| Message-ID | <CANaxB-zK5q=Xw6UZTmeFtXsDZjUsPkFk=p485m-wtNTBnf4hgg@mail.gmail.com> |
On Wed, Jun 17, 2026 at 4:08=E2=80=AFAM Christian Brauner <[email protected]= rg> wrote: > > > After this patch, step b) is a straight copy which means step d)'s > > fixup doesn't modify what's in the pipe. This could be fixed up in > > libfuse to not depend on modify-after-vmsplice, but I don't think this > > helps for applications using already-released libfuse versions. I > > think this patch needs to be reverted. > > Note, nothing was merged. I deliberately kept in -next though for a long > time to see how quickly we'd see regressions. The bait worked. CRIU wins a prize in this lottery. The CRIU fifo test fails with this change. The problem is that vmsplice with SPLICE_F_NONBLOCK to a fifo file descriptor fails with -EOPNOTSUPP. It seems we need a fix like this one: diff --git a/fs/pipe.c b/fs/pipe.c index 429b0714ec57..6fc49e933727 100644 --- a/fs/pipe.c +++ b/fs/pipe.c @@ -1253,6 +1253,7 @@ static int fifo_open(struct inode *inode, struct file *filp) /* We can only do regular read/write on fifos */ stream_open(inode, filp); + filp->f_mode |=3D FMODE_NOWAIT; switch (filp->f_mode & (FMODE_READ | FMODE_WRITE)) { case FMODE_READ: