Hi Jens, On 5/27/2022 9:50 PM, Jens Axboe wrote: > I'm a bit skeptical on this, but I'd like to try and run the test case. > Since it's just a fio test case, why can't I find it somewhere? Seems > very convoluted to have to setup lkp-tests just for this. Besides, I > tried, but it doesn't work on aarch64... Recheck this regression report. The regression could be reproduced if the following config file is used with fio (tag: fio-3.25) : [global] rw=write ioengine=io_uring iodepth=64 size=1g direct=1 buffered=1 startdelay=5 force_async=4 ramp_time=5 runtime=20 time_based clat_percentiles=0 disable_lat=1 disable_clat=1 disable_slat=1 filename=test_fiofile [test] name=test bs=1M stonewall Just FYI, a small change to commit: 584b0180f0f4d67d7145950fe68c625f06c88b10: diff --git a/fs/io_uring.c b/fs/io_uring.c index 969f65de9972..616d857f8fc6 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -3181,8 +3181,13 @@ static int io_prep_rw(struct io_kiocb *req, const struct io_uring_sqe *sqe) { struct kiocb *kiocb = &req->rw.kiocb; unsigned ioprio; + struct file *file = req->file; int ret; + if (likely(file && (file->f_mode & FMODE_WRITE))) + if (!io_req_ffs_set(req)) + req->flags |= io_file_get_flags(file) << REQ_F_SUPPORT_NOWAIT_BIT; + kiocb->ki_pos = READ_ONCE(sqe->off); ioprio = READ_ONCE(sqe->ioprio); could make regression gone. No idea how req->flags impact the write performance. Thanks. Regards Yin, Fengwei