Commit afed6271 authored by Jens Axboe's avatar Jens Axboe

pipe: set FMODE_NOWAIT on pipes

Pipes themselves do not hold the the pipe lock across IO, and hence are
safe for RWF_NOWAIT/IOCB_NOWAIT usage. The "contract" for NOWAIT is
really "should not do IO under this lock", not strictly that we cannot
block or that the below code is in any way atomic. Pipes fulfil that
criteria.
Acked-by: default avatarDave Chinner <dchinner@redhat.com>
Reviewed-by: default avatarChristian Brauner <brauner@kernel.org>
Signed-off-by: default avatarJens Axboe <axboe@kernel.dk>
parent 0f99fc51
...@@ -976,6 +976,9 @@ static int __do_pipe_flags(int *fd, struct file **files, int flags) ...@@ -976,6 +976,9 @@ static int __do_pipe_flags(int *fd, struct file **files, int flags)
audit_fd_pair(fdr, fdw); audit_fd_pair(fdr, fdw);
fd[0] = fdr; fd[0] = fdr;
fd[1] = fdw; fd[1] = fdw;
/* pipe groks IOCB_NOWAIT */
files[0]->f_mode |= FMODE_NOWAIT;
files[1]->f_mode |= FMODE_NOWAIT;
return 0; return 0;
err_fdr: err_fdr:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment