On 2023/8/24 22:43, chengming.zhou@xxxxxxxxx wrote: > From: Chengming Zhou <zhouchengming@xxxxxxxxxxxxx> > > The current queue_rqs() support has limitation that it can't work on > shared tags queue, which is resolved by patch 1-3. We move the account > of active requests to where we really allocate the driver tag. > > This is clearer and matched with the unaccount side which now happen > when we put the driver tag. And we can remove RQF_MQ_INFLIGHT, which > was used to avoid double account problem of flush request. > > Another problem is that the driver that support queue_rqs() has to > set inflight request table by itself, which is resolved in patch 4. > > The patch 5 fixes a potential race problem which may cause false > timeout because of the reorder of rq->state and rq->deadline. > > The patch 6 add support queue_rqs() for null_blk, which showed a > 3.6% IOPS improvement in fio/t/io_uring benchmark on my test VM. > And we also use it for testing queue_rqs() on shared tags queue. Hello, gentle ping. Thanks. > > Thanks for review! > > Chengming Zhou (6): > blk-mq: account active requests when get driver tag > blk-mq: remove RQF_MQ_INFLIGHT > blk-mq: support batched queue_rqs() on shared tags queue > blk-mq: update driver tags request table when start request > blk-mq: fix potential reorder of request state and deadline > block/null_blk: add queue_rqs() support > > block/blk-flush.c | 11 ++----- > block/blk-mq-debugfs.c | 1 - > block/blk-mq.c | 53 ++++++++++++++------------------ > block/blk-mq.h | 57 ++++++++++++++++++++++++----------- > drivers/block/null_blk/main.c | 20 ++++++++++++ > drivers/block/virtio_blk.c | 2 -- > drivers/nvme/host/pci.c | 1 - > include/linux/blk-mq.h | 2 -- > 8 files changed, 84 insertions(+), 63 deletions(-) >