On Wed, Dec 22, 2021 at 6:57 PM Song Liu <song@xxxxxxxxxx> wrote: > > On Tue, Dec 21, 2021 at 12:06 PM Vishal Verma <vverma@xxxxxxxxxxxxxxxx> wrote: > > > > commit 021a24460dc2 ("block: add QUEUE_FLAG_NOWAIT") added support > > for checking whether a given bdev supports handling of REQ_NOWAIT or not. > > Since then commit 6abc49468eea ("dm: add support for REQ_NOWAIT and enable > > it for linear target") added support for REQ_NOWAIT for dm. This uses > > a similar approach to incorporate REQ_NOWAIT for md based bios. > > > > This patch was tested using t/io_uring tool within FIO. A nvme drive > > was partitioned into 2 partitions and a simple raid 0 configuration > > /dev/md0 was created. > > > > md0 : active raid0 nvme4n1p1[1] nvme4n1p2[0] > > 937423872 blocks super 1.2 512k chunks > > > > Before patch: > > > > $ ./t/io_uring /dev/md0 -p 0 -a 0 -d 1 -r 100 > > > > Running top while the above runs: > > > > $ ps -eL | grep $(pidof io_uring) > > > > 38396 38396 pts/2 00:00:00 io_uring > > 38396 38397 pts/2 00:00:15 io_uring > > 38396 38398 pts/2 00:00:13 iou-wrk-38397 > > > > We can see iou-wrk-38397 io worker thread created which gets created > > when io_uring sees that the underlying device (/dev/md0 in this case) > > doesn't support nowait. > > > > After patch: > > > > $ ./t/io_uring /dev/md0 -p 0 -a 0 -d 1 -r 100 > > > > Running top while the above runs: > > > > $ ps -eL | grep $(pidof io_uring) > > > > 38341 38341 pts/2 00:10:22 io_uring > > 38341 38342 pts/2 00:10:37 io_uring > > > > After running this patch, we don't see any io worker thread > > being created which indicated that io_uring saw that the > > underlying device does support nowait. This is the exact behaviour > > noticed on a dm device which also supports nowait. > > > > For all the other raid personalities except raid0, we would need > > to train pieces which involves make_request fn in order for them > > to correctly handle REQ_NOWAIT. > > > > Signed-off-by: Vishal Verma <vverma@xxxxxxxxxxxxxxxx> > > I have made some changes and applied the set to md-next. However, > I think we don't yet have enough test coverage. Please continue testing > the code and send fixes on top of it. Based on the test results, we will > see whether we can ship it in the next merge window. > > Note, md-next branch doesn't have [1], so we need to cherry-pick it > for testing. I went through all these changes again and tested many (but not all) cases. The latest version is available in md-next branch. Vishal, please run tests on this version and send fixes if anything is broken. Thanks, Song