nvme-multipath: support io stats on the mpath device
authorSagi Grimberg <sagi@grimberg.me>
Tue, 29 Nov 2022 14:43:19 +0000 (15:43 +0100)
committerChristoph Hellwig <hch@lst.de>
Tue, 6 Dec 2022 08:17:01 +0000 (09:17 +0100)
commitd4d957b53d91eebc8c681c480edfdc697e55231e
treebd16c8dd155f6c0ed055035ad6f6a353b93345e7
parent6887fc6495f2dfd55e088c982e983815278ee453
nvme-multipath: support io stats on the mpath device

Our mpath stack device is just a shim that selects a bottom namespace
and submits the bio to it without any fancy splitting. This also means
that we don't clone the bio or have any context to the bio beyond
submission. However it really sucks that we don't see the mpath device
io stats.

Given that the mpath device can't do that without adding some context
to it, we let the bottom device do it on its behalf (somewhat similar
to the approach taken in nvme_trace_bio_complete).

When the IO starts, we account the request for multipath IO stats using
REQ_NVME_MPATH_IO_STATS nvme_request flag to avoid queue io stats disable
in the middle of the request.

Signed-off-by: Sagi Grimberg <sagi@grimberg.me>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/core.c
drivers/nvme/host/multipath.c
drivers/nvme/host/nvme.h