• Linus Torvalds's avatar
    pipe: remove 'waiting_writers' merging logic · a28c8b9d
    Linus Torvalds authored
    This code is ancient, and goes back to when we only had a single page
    for the pipe buffers.  The exact history is hidden in the mists of time
    (ie "before git", and in fact predates the BK repository too).
    
    At that long-ago point in time, it actually helped to try to merge big
    back-and-forth pipe reads and writes, and not limit pipe reads to the
    single pipe buffer in length just because that was all we had at a time.
    
    However, since then we've expanded the pipe buffers to multiple pages,
    and this logic really doesn't seem to make sense.  And a lot of it is
    somewhat questionable (ie "hmm, the user asked for a non-blocking read,
    but we see that there's a writer pending, so let's wait anyway to get
    the extra data that the writer will have").
    
    But more importantly, it makes the "go to sleep" logic much less
    obvious, and considering the wakeup issues we've had, I want to make for
    less of those kinds of things.
    
    Cc: David Howells <dhowells@redhat.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    a28c8b9d
pipe.c 29.9 KB