3. Do you have some performance numbers (we're touching the fast path
here) ?
This is pretty light-weight, accounting is per-cpu and only wrapped by
preemption disable. This is a very small price to pay for what we gain.
It does add up, though, and some environments disable stats to skip the
overhead. At a minimum, you need to add a check for blk_queue_io_stat() before
assuming you need to account for stats.
But QUEUE_FLAG_IO_STAT is set by nvme-mpath itself?
You mean disable IO stats in runtime?
Yes, the user can disable it at any time. That actually makes things a bit
tricky since it can be enabled at the start of an IO and disabled by the time
it completes.
That is what blk_do_io_stat is for, we can definitely export that.