diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-02-08 11:44:02 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-02-08 11:44:02 -0800 |
commit | 995933305e11dc8698fdba249ca5f2d145b1d657 (patch) | |
tree | 130c5cae418ba529f44b27fbfd26e3a18c673996 /include | |
parent | f757165705e92db62f85a1ad287e9251d1f2cd82 (diff) | |
parent | 0ddad21d3e99c743a3aa473121dc5561679e26bb (diff) | |
download | linux-995933305e11dc8698fdba249ca5f2d145b1d657.tar.bz2 |
Merge branch 'pipe-exclusive-wakeup'
Merge thundering herd avoidance on pipe IO.
This would have been applied for 5.5 already, but got delayed because of
a user-space race condition in the GNU make jobserver code. Now that
there's a new GNU make 4.3 release, and most distributions seem to have
at least applied the (almost three year old) fix for the problem, let's
see if people notice.
And it might have been just bad random timing luck on my machine.
If you do hit the race condition, things will still work, but the
symptom is that you don't get nearly the expected parallelism when using
"make -j<N>".
The jobserver bug can definitely happen without this patch too, but
seems to be easier to trigger when we no longer wake up pipe waiters
unnecessarily.
* pipe-exclusive-wakeup:
pipe: use exclusive waits when reading or writing
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/pipe_fs_i.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index dbcfa6892384..d5765039652a 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h @@ -47,7 +47,7 @@ struct pipe_buffer { **/ struct pipe_inode_info { struct mutex mutex; - wait_queue_head_t wait; + wait_queue_head_t rd_wait, wr_wait; unsigned int head; unsigned int tail; unsigned int max_usage; |