[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 11/12] block: Drop bdrv_ioctl_bh_cb
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PULL 11/12] block: Drop bdrv_ioctl_bh_cb |
Date: |
Tue, 7 Jun 2016 15:26:24 +0100 |
From: Fam Zheng <address@hidden>
Similar to the "!drv || !drv->bdrv_aio_ioctl" case above, here it is
okay to set co.ret and return. As pointed out by Paolo, a BH will be
created as necessary by the caller (bdrv_co_maybe_schedule_bh).
Besides, as pointed out by Kevin, "data" was leaked before.
Reported-by: Kevin Wolf <address@hidden>
Reported-by: Paolo Bonzini <address@hidden>
Signed-off-by: Fam Zheng <address@hidden>
Reviewed-by: Paolo Bonzini <address@hidden>
Message-id: address@hidden
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block/io.c | 20 ++------------------
1 file changed, 2 insertions(+), 18 deletions(-)
diff --git a/block/io.c b/block/io.c
index a2fba67..6070e77 100644
--- a/block/io.c
+++ b/block/io.c
@@ -2327,19 +2327,6 @@ int bdrv_discard(BlockDriverState *bs, int64_t
sector_num, int nb_sectors)
return rwco.ret;
}
-typedef struct {
- CoroutineIOCompletion *co;
- QEMUBH *bh;
-} BdrvIoctlCompletionData;
-
-static void bdrv_ioctl_bh_cb(void *opaque)
-{
- BdrvIoctlCompletionData *data = opaque;
-
- bdrv_co_io_em_complete(data->co, -ENOTSUP);
- qemu_bh_delete(data->bh);
-}
-
static int bdrv_co_do_ioctl(BlockDriverState *bs, int req, void *buf)
{
BlockDriver *drv = bs->drv;
@@ -2357,11 +2344,8 @@ static int bdrv_co_do_ioctl(BlockDriverState *bs, int
req, void *buf)
acb = drv->bdrv_aio_ioctl(bs, req, buf, bdrv_co_io_em_complete, &co);
if (!acb) {
- BdrvIoctlCompletionData *data = g_new(BdrvIoctlCompletionData, 1);
- data->bh = aio_bh_new(bdrv_get_aio_context(bs),
- bdrv_ioctl_bh_cb, data);
- data->co = &co;
- qemu_bh_schedule(data->bh);
+ co.ret = -ENOTSUP;
+ goto out;
}
qemu_coroutine_yield();
out:
--
2.5.5
- [Qemu-devel] [PULL 00/12] Block patches, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 03/12] blockdev-backup: Don't move target AioContext if it's attached, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 01/12] tests: avoid coroutine pool test crash, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 02/12] blockdev-backup: Use bdrv_lookup_bs on target, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 04/12] virtio-blk: Remove op blocker for dataplane, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 05/12] virtio-scsi: Remove op blocker for dataplane, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 07/12] block/io: Remove unused bdrv_aio_write_zeroes(), Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 08/12] iostatus: fix comments for block_job_iostatus_reset, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 06/12] virtio: drop duplicate virtio_queue_get_id() function, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 11/12] block: Drop bdrv_ioctl_bh_cb,
Stefan Hajnoczi <=
- [Qemu-devel] [PULL 09/12] block/io: optimize bdrv_co_pwritev for small requests, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 10/12] block: Move BlockRequest type to io.c, Stefan Hajnoczi, 2016/06/07
- [Qemu-devel] [PULL 12/12] throttle: refuse iops-size without iops-total/read/write, Stefan Hajnoczi, 2016/06/07
- Re: [Qemu-devel] [PULL 00/12] Block patches, Peter Maydell, 2016/06/07