HomeFreeBSD

MFC r351348 (by markj):

Description

MFC r351348 (by markj):
Modify pipe_poll() to properly check for pending direct writes.

With r349546, it is a responsibility of the writer to clear PIPE_DIRECTW
after pinned data has been read. In particular, once a reader has
drained this data, there is a small window where the pipe is empty but
PIPE_DIRECTW is set. pipe_poll() was using the presence of PIPE_DIRECTW
to determine whether to return POLLIN, so in this window it would
claim that data was available to read when this was not the case.

Fix this by modifying several checks for PIPE_DIRECTW to instead look
at the number of residual bytes in data pinned by a direct writer. In
some cases we really do want to check for PIPE_DIRECTW, since the
presence of this flag indicates that any attempt to write to the pipe
will block on the existing direct writer.

Details

Committed
mavAug 27 2019, 3:05 AM
Parents
rS351525: Add support for _PC_MIN_HOLE_SIZE to the NFSv4.2 client.
Branches
Unknown
Tags
Unknown