Thread (30 messages) 30 messages, 2 authors, 2019-09-11

Re: [PATCH v8 13/13] nvmet-passthru: support block accounting

From: Logan Gunthorpe <logang@deltatee.com>
Date: 2019-09-09 19:33:15
Also in: linux-fsdevel, linux-nvme, lkml


On 2019-09-09 1:26 p.m., Sagi Grimberg wrote:
quoted
quoted
quoted
Support block disk accounting by setting the RQF_IO_STAT flag
and gendisk in the request.

After this change, IO counts will be reflected correctly in
/proc/diskstats for drives being used by passthru.

Signed-off-by: Logan Gunthorpe <logang@deltatee.com>
---
   drivers/nvme/target/io-cmd-passthru.c | 5 ++++-
   1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/nvme/target/io-cmd-passthru.c b/drivers/nvme/target/io-cmd-passthru.c
index 7557927a3451..63f12750a80d 100644
--- a/drivers/nvme/target/io-cmd-passthru.c
+++ b/drivers/nvme/target/io-cmd-passthru.c
@@ -410,6 +410,9 @@ static struct request *nvmet_passthru_blk_make_request(struct nvmet_req *req,
   	if (unlikely(IS_ERR(rq)))
   		return rq;
   
+	if (blk_queue_io_stat(q) && cmd->common.opcode != nvme_cmd_flush)
+		rq->rq_flags |= RQF_IO_STAT;
Thanks for the review!
quoted
Does flush has data bytes in the request? Why the special casing?
Well it was special cased in the vanilla blk account flow... But I think
it's required to be special cased so the IO and in_flight counts don't
count flushes (as they do not for regular block device traffic).
I think that the accounting exclude I/O that is yielded from the flush
sequence. Don't think its relevant here...
What? Per blk_account_io_done(), RQF_FLUSH_SEQ will not be set by us for
passthru commands and I don't think it's appropriate to do so. Thus, if
we set RQF_IO_STAT for passthru flush commands, they will be counted
which we do not want.

Logan
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help