block: queue data commands from the flush state machine at the head block-6.5-2023-07-14
authorChristoph Hellwig <hch@lst.de>
Fri, 14 Jul 2023 14:30:14 +0000 (16:30 +0200)
committerJens Axboe <axboe@kernel.dk>
Fri, 14 Jul 2023 14:42:58 +0000 (08:42 -0600)
commit9f87fc4d72f52b26ac3e19df5e4584227fe6740c
tree58169b545b6aa86d4c746668169d64bcd24cf86d
parent90b4622954d59078fa0cecad7e7baa48efd006e7
block: queue data commands from the flush state machine at the head

We used to insert the data commands following a pre-flush to the head
of the queue until commit 1e82fadfc6b ("blk-mq: do not do head insertions
post-pre-flush commands").  Not doing this seems to cause hangs of
such commands on NFS workloads when exported from file systems with
SATA SSDs.  I have no idea why this would starve these workloads,
but doing a semantic revert of this patch (which looks quite different
due to various other changes) fixes the hangs.

Fixes: 1e82fadfc6b ("blk-mq: do not do head insertions post-pre-flush commands")
Reported-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Tested-by: Chuck Lever <chuck.lever@oracle.com>
Link: https://lore.kernel.org/r/20230714143014.11879-1-hch@lst.de
Signed-off-by: Jens Axboe <axboe@kernel.dk>
block/blk-flush.c