From: Chaitanya Kulkarni <kch@nvidia.com>
To: <mst@redhat.com>, <jasowang@redhat.com>, <pbonzini@redhat.com>,
<stefanha@redhat.com>
Cc: <virtualization@lists.linux-foundation.org>,
<linux-block@vger.kernel.org>,
Chaitanya Kulkarni <kch@nvidia.com>
Subject: [PATCH 3/4] virtio-blk: avoid function call in the fast path
Date: Tue, 19 Apr 2022 21:10:52 -0700 [thread overview]
Message-ID: <20220420041053.7927-4-kch@nvidia.com> (raw)
In-Reply-To: <20220420041053.7927-1-kch@nvidia.com>
We can avoid a function call virtblk_map_data() in the fast path if
block layer request has no physical segments by moving the call
blk_rq_nr_phys_segments() from virtblk_map_data() to virtio_queue_rq().
Signed-off-by: Chaitanya Kulkarni <kch@nvidia.com>
---
drivers/block/virtio_blk.c | 15 +++++++--------
1 file changed, 7 insertions(+), 8 deletions(-)
diff --git a/drivers/block/virtio_blk.c b/drivers/block/virtio_blk.c
index d038800474c2..74c3a48cd1e5 100644
--- a/drivers/block/virtio_blk.c
+++ b/drivers/block/virtio_blk.c
@@ -178,9 +178,6 @@ static int virtblk_map_data(struct blk_mq_hw_ctx *hctx, struct request *req,
{
int err;
- if (!blk_rq_nr_phys_segments(req))
- return 0;
-
vbr->sg_table.sgl = vbr->sg;
err = sg_alloc_table_chained(&vbr->sg_table,
blk_rq_nr_phys_segments(req),
@@ -303,7 +300,7 @@ static blk_status_t virtio_queue_rq(struct blk_mq_hw_ctx *hctx,
struct request *req = bd->rq;
struct virtblk_req *vbr = blk_mq_rq_to_pdu(req);
unsigned long flags;
- int num;
+ int num = 0;
int qid = hctx->queue_num;
bool notify = false;
blk_status_t status;
@@ -315,10 +312,12 @@ static blk_status_t virtio_queue_rq(struct blk_mq_hw_ctx *hctx,
blk_mq_start_request(req);
- num = virtblk_map_data(hctx, req, vbr);
- if (unlikely(num < 0)) {
- virtblk_cleanup_cmd(req);
- return BLK_STS_RESOURCE;
+ if (blk_rq_nr_phys_segments(req)) {
+ num = virtblk_map_data(hctx, req, vbr);
+ if (unlikely(num < 0)) {
+ virtblk_cleanup_cmd(req);
+ return BLK_STS_RESOURCE;
+ }
}
spin_lock_irqsave(&vblk->vqs[qid].lock, flags);
--
2.29.0
next prev parent reply other threads:[~2022-04-20 4:11 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-20 4:10 [PATCH 0/4] virtio-blk: small cleanup Chaitanya Kulkarni
2022-04-20 4:10 ` [PATCH 1/4] virtio-blk: remove additional check in fast path Chaitanya Kulkarni
2022-04-20 14:54 ` Stefan Hajnoczi
2022-04-20 14:54 ` Stefan Hajnoczi
2022-04-21 21:51 ` Chaitanya Kulkarni
2022-04-20 4:10 ` [PATCH 2/4] virtio-blk: don't add a new line Chaitanya Kulkarni
2022-04-20 15:04 ` Stefan Hajnoczi
2022-04-20 15:04 ` Stefan Hajnoczi
2022-04-21 21:52 ` Chaitanya Kulkarni
2022-04-20 4:10 ` Chaitanya Kulkarni [this message]
2022-04-20 15:16 ` [PATCH 3/4] virtio-blk: avoid function call in the fast path Stefan Hajnoczi
2022-04-20 15:16 ` Stefan Hajnoczi
2022-04-21 21:55 ` Chaitanya Kulkarni
2022-04-20 4:10 ` [PATCH 4/4] virtio-blk: remove deprecated ida_simple_XXX() Chaitanya Kulkarni
2022-04-20 15:19 ` Stefan Hajnoczi
2022-04-20 15:19 ` Stefan Hajnoczi
2022-04-21 21:56 ` [PATCH 0/4] virtio-blk: small cleanup Chaitanya Kulkarni
2022-04-22 14:56 ` Stefan Hajnoczi
2022-04-22 14:56 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220420041053.7927-4-kch@nvidia.com \
--to=kch@nvidia.com \
--cc=jasowang@redhat.com \
--cc=linux-block@vger.kernel.org \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=stefanha@redhat.com \
--cc=virtualization@lists.linux-foundation.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.