Re: [PATCH RFC] nvme-multipath: fix diskstats for partitions
John Garry <[email protected]> Fri, 24 Jul 2026 16:29:08 +0100
| Newsgroups | org.infradead.lists.linux-nvme,org.kernel.vger.linux-block |
|---|---|
| Message-ID | <[email protected]> |
On 7/24/26 13:45, Keith Busch wrote: > On Fri, Jul 24, 2026 at 08:09:51AM +0100, John Garry wrote: >> On 24/07/2026 06:01, Christoph Hellwig wrote: >>> On Tue, Jul 21, 2026 at 11: 45: 53AM +0000, John Garry wrote: > Setting as an >>> RFC as adding this extra bio field is not acceptable, but I > can't see how to >>> lookup the original partition. In general it is not, but you should mark this a >>> >>> >>> On Tue, Jul 21, 2026 at 11:45:53AM +0000, John Garry wrote: >>>> Setting as an RFC as adding this extra bio field is not acceptable, but I >>>> can't see how to lookup the original partition. >>> >>> In general it is not, but you should mark this a block patch so that >>> Jens can better cream at you :) >>> >>> I'm also not sure that supporting per-partition diskstats on a multipath >>> device makes too much sense, but then again there's a lot of setups >>> that are crazy and actually used.. >>> >> >> It just seems to me that we should have same behaviour as if it were not >> multipath. >> >> So we can't use bi_private as that can be set by original bio submitter. I >> was thinking that this bdev pointer could be temp stashed in bi_next (as it >> should be originally NULL), but that it dodgy and maybe won't even work. > > Failover is corner case to consider here. We always reset the bio bdev > to the part0, so your stats will be incorrect when that happens. I think > you can quickly fix that in your proposal with the "bi_orig", though. > > Can we just thread through partitions for the bio's block_device instead > of assuming part0? I know the hidden path devices skip partition > scanning, but maybe if we let it happen, then those will have the same > partition setup as the head gendisk. Then we can go right to the > disk->part_tbl for what we provide to bio_set_dev() for both submission > and failover, and everything should work out from there. I guess that we would just scan through the per-path gendisk->part_tbl and match somehow to lookup the partition. Maybe vs start address of bio->bi_bdev. Or is there a simpler (and quicker) way?