Page MenuHomeFreeBSD

Fix handling of PIPE_EOF in the direct write path.
ClosedPublic

Authored by markj on Wed, Nov 6, 5:11 PM.

Details

Summary

Suppose a writing thread has pinned its pages and gone to sleep with
pipe_map.cnt > 0. Suppose that the thread is woken up by a signal (so
error != 0) and the other end of the pipe has simultaneously been
closed. In this case, to satisfy the assertion about pipe_map.cnt in
pipe_destroy_write_buffer(), we must mark the buffer as empty.

Diff Detail

Repository
rS FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

markj created this revision.Wed, Nov 6, 5:11 PM
markj added a reviewer: kib.Wed, Nov 6, 5:12 PM
kib accepted this revision.Wed, Nov 6, 8:01 PM
This revision is now accepted and ready to land.Wed, Nov 6, 8:01 PM
markj added a subscriber: pho.Thu, Nov 7, 3:46 PM

Peter, could you please test this patch?

pho added a comment.Thu, Nov 7, 7:23 PM

Peter, could you please test this patch?

Sure.

pho added a comment.Sun, Nov 10, 1:03 AM

I completed a full stress2 test with D22261.64008.diff.
The only problem I saw was this (unrelated) panic: https://people.freebsd.org/~pho/stress/log/mark107.txt

markj added a comment.Mon, Nov 11, 2:33 PM
In D22261#487620, @pho wrote:

I completed a full stress2 test with D22261.64008.diff.
The only problem I saw was this (unrelated) panic: https://people.freebsd.org/~pho/stress/log/mark107.txt

Could you make the vmcore+kernel for this one available?

This revision was automatically updated to reflect the committed changes.