[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 6/8] virtio-blk: remove unnecessary AioContext lock from function
From: |
Stefan Hajnoczi |
Subject: |
[PATCH 6/8] virtio-blk: remove unnecessary AioContext lock from function already safe |
Date: |
Tue, 8 Nov 2022 16:19:28 -0500 |
From: Emanuele Giuseppe Esposito <eesposit@redhat.com>
AioContext lock was introduced in b9e413dd375 and in this instance
it is used to protect these 3 functions:
- virtio_blk_handle_rw_error
- virtio_blk_req_complete
- block_acct_done
Now that all three of the above functions are protected with
their own locks, we can get rid of the AioContext lock.
Signed-off-by: Emanuele Giuseppe Esposito <eesposit@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Message-Id: <20220609143727.1151816-9-eesposit@redhat.com>
---
hw/block/virtio-blk.c | 19 ++-----------------
1 file changed, 2 insertions(+), 17 deletions(-)
diff --git a/hw/block/virtio-blk.c b/hw/block/virtio-blk.c
index f8fcf25292..faea045178 100644
--- a/hw/block/virtio-blk.c
+++ b/hw/block/virtio-blk.c
@@ -108,7 +108,6 @@ static void virtio_blk_rw_complete(void *opaque, int ret)
IO_CODE();
- aio_context_acquire(blk_get_aio_context(s->conf.conf.blk));
while (next) {
VirtIOBlockReq *req = next;
next = req->mr_next;
@@ -141,7 +140,6 @@ static void virtio_blk_rw_complete(void *opaque, int ret)
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));
}
static void virtio_blk_flush_complete(void *opaque, int ret)
@@ -150,20 +148,16 @@ static void virtio_blk_flush_complete(void *opaque, int
ret)
VirtIOBlock *s = req->dev;
IO_CODE();
- aio_context_acquire(blk_get_aio_context(s->conf.conf.blk));
if (ret) {
if (virtio_blk_handle_rw_error(req, -ret, 0, true)) {
- goto out;
+ return;
}
}
virtio_blk_req_complete(req, VIRTIO_BLK_S_OK);
block_acct_done(blk_get_stats(s->blk), &req->acct);
virtio_blk_free_request(req);
-
-out:
- aio_context_release(blk_get_aio_context(s->conf.conf.blk));
}
static void virtio_blk_discard_write_zeroes_complete(void *opaque, int ret)
@@ -174,11 +168,10 @@ static void virtio_blk_discard_write_zeroes_complete(void
*opaque, int ret)
~VIRTIO_BLK_T_BARRIER) ==
VIRTIO_BLK_T_WRITE_ZEROES;
IO_CODE();
- aio_context_acquire(blk_get_aio_context(s->conf.conf.blk));
if (ret) {
if (virtio_blk_handle_rw_error(req, -ret, false, is_write_zeroes)) {
- goto out;
+ return;
}
}
@@ -187,9 +180,6 @@ static void virtio_blk_discard_write_zeroes_complete(void
*opaque, int ret)
block_acct_done(blk_get_stats(s->blk), &req->acct);
}
virtio_blk_free_request(req);
-
-out:
- aio_context_release(blk_get_aio_context(s->conf.conf.blk));
}
#ifdef __linux__
@@ -238,10 +228,8 @@ static void virtio_blk_ioctl_complete(void *opaque, int
status)
virtio_stl_p(vdev, &scsi->data_len, hdr->dxfer_len);
out:
- aio_context_acquire(blk_get_aio_context(s->conf.conf.blk));
virtio_blk_req_complete(req, status);
virtio_blk_free_request(req);
- aio_context_release(blk_get_aio_context(s->conf.conf.blk));
g_free(ioctl_req);
}
@@ -852,7 +840,6 @@ static void virtio_blk_dma_restart_bh(void *opaque)
s->rq = NULL;
- aio_context_acquire(blk_get_aio_context(s->conf.conf.blk));
while (req) {
VirtIOBlockReq *next = req->next;
if (virtio_blk_handle_request(req, &mrb)) {
@@ -876,8 +863,6 @@ static void virtio_blk_dma_restart_bh(void *opaque)
/* Paired with inc in virtio_blk_dma_restart_cb() */
blk_dec_in_flight(s->conf.conf.blk);
-
- aio_context_release(blk_get_aio_context(s->conf.conf.blk));
}
/*
--
2.38.1
- [PATCH 1/8] virtio_queue_aio_attach_host_notifier: remove AioContext lock, (continued)
- [PATCH 1/8] virtio_queue_aio_attach_host_notifier: remove AioContext lock, Stefan Hajnoczi, 2022/11/08
- [PATCH 2/8] block-backend: enable_write_cache should be atomic, Stefan Hajnoczi, 2022/11/08
- [PATCH 3/8] virtio: categorize callbacks in GS, Stefan Hajnoczi, 2022/11/08
- [PATCH 7/8] virtio-blk: don't acquire AioContext in virtio_blk_handle_vq(), Stefan Hajnoczi, 2022/11/08
- [PATCH 4/8] virtio-blk: mark GLOBAL_STATE_CODE functions, Stefan Hajnoczi, 2022/11/08
- [PATCH 6/8] virtio-blk: remove unnecessary AioContext lock from function already safe,
Stefan Hajnoczi <=
- [PATCH 5/8] virtio-blk: mark IO_CODE functions, Stefan Hajnoczi, 2022/11/08
- [PATCH 8/8] virtio-blk: minimize virtio_blk_reset() AioContext lock region, Stefan Hajnoczi, 2022/11/08