pipe: Remove sync on wake_ups

This commit is contained in:
David Howells 2019-11-01 20:52:24 +00:00
parent cefa80ced5
commit 3c0edea9b2

View File

@ -332,7 +332,7 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to)
do_wakeup = 1; do_wakeup = 1;
wake = head - (tail - 1) == pipe->max_usage / 2; wake = head - (tail - 1) == pipe->max_usage / 2;
if (wake) if (wake)
wake_up_interruptible_sync_poll_locked( wake_up_locked_poll(
&pipe->wait, EPOLLOUT | EPOLLWRNORM); &pipe->wait, EPOLLOUT | EPOLLWRNORM);
spin_unlock_irq(&pipe->wait.lock); spin_unlock_irq(&pipe->wait.lock);
if (wake) if (wake)
@ -371,7 +371,7 @@ pipe_read(struct kiocb *iocb, struct iov_iter *to)
/* Signal writers asynchronously that there is more room. */ /* Signal writers asynchronously that there is more room. */
if (do_wakeup) { if (do_wakeup) {
wake_up_interruptible_sync_poll(&pipe->wait, EPOLLOUT | EPOLLWRNORM); wake_up_interruptible_poll(&pipe->wait, EPOLLOUT | EPOLLWRNORM);
kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT); kill_fasync(&pipe->fasync_writers, SIGIO, POLL_OUT);
} }
if (ret > 0) if (ret > 0)
@ -477,7 +477,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
* syscall merging. * syscall merging.
* FIXME! Is this really true? * FIXME! Is this really true?
*/ */
wake_up_interruptible_sync_poll_locked( wake_up_locked_poll(
&pipe->wait, EPOLLIN | EPOLLRDNORM); &pipe->wait, EPOLLIN | EPOLLRDNORM);
spin_unlock_irq(&pipe->wait.lock); spin_unlock_irq(&pipe->wait.lock);
@ -531,7 +531,7 @@ pipe_write(struct kiocb *iocb, struct iov_iter *from)
out: out:
__pipe_unlock(pipe); __pipe_unlock(pipe);
if (do_wakeup) { if (do_wakeup) {
wake_up_interruptible_sync_poll(&pipe->wait, EPOLLIN | EPOLLRDNORM); wake_up_interruptible_poll(&pipe->wait, EPOLLIN | EPOLLRDNORM);
kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN); kill_fasync(&pipe->fasync_readers, SIGIO, POLL_IN);
} }
if (ret > 0 && sb_start_write_trylock(file_inode(filp)->i_sb)) { if (ret > 0 && sb_start_write_trylock(file_inode(filp)->i_sb)) {