• Vishal Verma's avatar
    md: add support for REQ_NOWAIT · f51d46d0
    Vishal Verma authored
    commit 021a2446 ("block: add QUEUE_FLAG_NOWAIT") added support
    for checking whether a given bdev supports handling of REQ_NOWAIT or not.
    Since then commit 6abc4946 ("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.
    Reviewed-by: default avatarJens Axboe <axboe@kernel.dk>
    Signed-off-by: default avatarVishal Verma <vverma@digitalocean.com>
    Signed-off-by: default avatarSong Liu <song@kernel.org>
    f51d46d0
md.c 260 KB