[Qemu-devel] [PATCH] hw/block/virtio-blk: Clean req->dev repetitions

Anastasiia Rusakova posted 1 patch 6 years, 8 months ago
Test asan failed
Test docker-mingw@fedora passed
Test docker-clang@ubuntu passed
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20190306170025.3830-1-rusakova.nastasia@icloud.com
Maintainers: Kevin Wolf <kwolf@redhat.com>, Stefan Hajnoczi <stefanha@redhat.com>, "Michael S. Tsirkin" <mst@redhat.com>, Max Reitz <mreitz@redhat.com>
There is a newer version of this series
hw/block/virtio-blk.c | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
[Qemu-devel] [PATCH] hw/block/virtio-blk: Clean req->dev repetitions
Posted by Anastasiia Rusakova 6 years, 8 months ago
From: Anastasiia Rusakova <arusakova917@gmail.com>

Some functions sometimes uses req->dev even though a local variable
VirtIOBlock* s = req->dev has already been defined.
Updated places to use s everywhere in the file.

Signed-off-by: Anastasiia Rusakova <arusakova917@gmail.com>
---
 hw/block/virtio-blk.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index 0cc3c590b9..ab29eecd55 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -127,7 +127,7 @@ static void virtio_blk_rw_complete(void *opaque, int ret)
         }
 
         if (ret) {
-            int p = virtio_ldl_p(VIRTIO_DEVICE(req->dev), &req->out.type);
+            int p = virtio_ldl_p(VIRTIO_DEVICE(s), &req->out.type);
             bool is_read = !(p & VIRTIO_BLK_T_OUT);
             /* Note that memory may be dirtied on read failure.  If the
              * virtio request is not completed here, as is the case for
@@ -143,7 +143,7 @@ static void virtio_blk_rw_complete(void *opaque, int ret)
         }
 
         virtio_blk_req_complete(req, VIRTIO_BLK_S_OK);
-        block_acct_done(blk_get_stats(req->dev->blk), &req->acct);
+        block_acct_done(blk_get_stats(s->blk), &req->acct);
         virtio_blk_free_request(req);
     }
     aio_context_release(blk_get_aio_context(s->conf.conf.blk));
@@ -260,9 +260,10 @@ static int virtio_blk_handle_scsi_req(VirtIOBlockReq *req)
 {
     int status = VIRTIO_BLK_S_OK;
     struct virtio_scsi_inhdr *scsi = NULL;
-    VirtIODevice *vdev = VIRTIO_DEVICE(req->dev);
+    VirtIOBlock *s = req->dev;
+    VirtIODevice *vdev = VIRTIO_DEVICE(s);
     VirtQueueElement *elem = &req->elem;
-    VirtIOBlock *blk = req->dev;
+    VirtIOBlock *blk = s;
 
 #ifdef __linux__
     int i;
@@ -492,16 +493,18 @@ static void virtio_blk_submit_multireq(BlockBackend *blk, MultiReqBuffer *mrb)
 
 static void virtio_blk_handle_flush(VirtIOBlockReq *req, MultiReqBuffer *mrb)
 {
-    block_acct_start(blk_get_stats(req->dev->blk), &req->acct, 0,
+    VirtIOBlock *s = req->dev;
+
+    block_acct_start(blk_get_stats(s->blk), &req->acct, 0,
                      BLOCK_ACCT_FLUSH);
 
     /*
      * Make sure all outstanding writes are posted to the backing device.
      */
     if (mrb->is_write && mrb->num_reqs > 0) {
-        virtio_blk_submit_multireq(req->dev->blk, mrb);
+        virtio_blk_submit_multireq(s->blk, mrb);
     }
-    blk_aio_flush(req->dev->blk, virtio_blk_flush_complete, req);
+    blk_aio_flush(s->blk, virtio_blk_flush_complete, req);
 }
 
 static bool virtio_blk_sect_range_ok(VirtIOBlock *dev,
-- 
2.20.1


Re: [Qemu-devel] [PATCH] hw/block/virtio-blk: Clean req->dev repetitions
Posted by Stefan Hajnoczi 6 years, 8 months ago
On Wed, Mar 06, 2019 at 07:00:25PM +0200, Anastasiia Rusakova wrote:
> @@ -260,9 +260,10 @@ static int virtio_blk_handle_scsi_req(VirtIOBlockReq *req)
>  {
>      int status = VIRTIO_BLK_S_OK;
>      struct virtio_scsi_inhdr *scsi = NULL;
> -    VirtIODevice *vdev = VIRTIO_DEVICE(req->dev);
> +    VirtIOBlock *s = req->dev;
> +    VirtIODevice *vdev = VIRTIO_DEVICE(s);
>      VirtQueueElement *elem = &req->elem;
> -    VirtIOBlock *blk = req->dev;
> +    VirtIOBlock *blk = s;

Hi Anastasiia,
Thanks for the patch!

This function calls it 'blk' instead of 's'.  's' can be eliminated by
reordering the variable definitions:

  VirtIOBlock *blk = req->dev;
  VirtIODevice *vdev = VIRTIO_DEVICE(blk);

The rest looks good to me.

Stefan