> I'm thinking it should check if (PIPE_SIZE - buf->len) > PIPE_BUF, and > set do_wakeup. The code could be #defined out if PIPE_SIZE == PIPE_BUF, > so the change reduces to a no-op on other archs. > > Does that sound right? I'm going to work on a patch here.
Roughly (without looking back as fs/pipe.c). When you have your patch, you will need to restart this discussion on the linux-kernel mailing list (since you'll be touching a generic file). Some random grepping for PAGE_SIZE (well PAGE_SHIFT) shows that some other artchitectures have some support for page size > PIPE_BUF. So there should be some interest in this fix. -Tony

