On Sun, Dec 18, 2016 at 12:30 PM, Al Viro <viro@xxxxxxxxxxxxxxxxxx> wrote: > > OK, I see what's going on - it's wait_for_space() lifted past the checks > for lack of readers. The fix, AFAICS, is simply Ugh. Does it have to be duplicated? How about just making the wait_for_space() loop be a for-loop, and writing it as for (;;) { if (unlikely(!pipe->readers)) { send_sig(SIGPIPE, current, 0); return -EPIPE; } if (pipe->nrbufs == pipe->buffers) return 0; if (flags & SPLICE_F_NONBLOCK) return -EAGAIN; if (signal_pending(current)) return -ERESTARTSYS; pipe->waiting_writers++; pipe_wait(pipe); pipe->waiting_writers--; } and just having it once? Regardless - Andreas, can you verify that that fixes your issues? I'm assuming you had some real load that made you notice this, not just he dummy example.. Linus -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html