+4
-1
fs/io_uring.c
+4
-1
fs/io_uring.c
···
3186
3186
ret = 0;
3187
3187
goto out_free;
3188
3188
} else if (ret == -EAGAIN) {
3189
+
if (!force_nonblock)
3190
+
goto done;
3189
3191
ret = io_setup_async_rw(req, iovec, inline_vecs, iter, false);
3190
3192
if (ret)
3191
3193
goto out_free;
···
3197
3195
}
3198
3196
3199
3197
/* read it all, or we did blocking attempt. no retry. */
3200
-
if (!iov_iter_count(iter) || !force_nonblock)
3198
+
if (!iov_iter_count(iter) || !force_nonblock ||
3199
+
(req->file->f_flags & O_NONBLOCK))
3201
3200
goto done;
3202
3201
3203
3202
io_size -= ret;