[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [RFC 08/13] block: drop bdrv_get_aio_context()
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [RFC 08/13] block: drop bdrv_get_aio_context() |
Date: |
Fri, 14 Jun 2013 11:48:28 +0200 |
Associating a BlockDriverState with a single AioContext is not flexible
enough. Once we make BlockDriverState thread-safe, it will be possible
to call bdrv_*() functions from multiple event loops.
Use the thread-local AioContext pointer instead of
bdrv_get_aio_context().
Signed-off-by: Stefan Hajnoczi <address@hidden>
---
block.c | 6 ------
block/raw-posix.c | 4 ++--
block/raw-win32.c | 2 +-
include/block/block_int.h | 7 -------
4 files changed, 3 insertions(+), 16 deletions(-)
diff --git a/block.c b/block.c
index a3323b2..d986fc8 100644
--- a/block.c
+++ b/block.c
@@ -4582,9 +4582,3 @@ out:
bdrv_delete(bs);
}
}
-
-AioContext *bdrv_get_aio_context(BlockDriverState *bs)
-{
- /* Currently BlockDriverState always uses the main loop AioContext */
- return qemu_get_aio_context();
-}
diff --git a/block/raw-posix.c b/block/raw-posix.c
index c0ccf27..821c19f 100644
--- a/block/raw-posix.c
+++ b/block/raw-posix.c
@@ -796,7 +796,7 @@ static BlockDriverAIOCB *paio_submit(BlockDriverState *bs,
int fd,
acb->aio_offset = sector_num * 512;
trace_paio_submit(acb, opaque, sector_num, nb_sectors, type);
- pool = aio_get_thread_pool(bdrv_get_aio_context(bs));
+ pool = aio_get_thread_pool(*get_thread_aio_context());
return thread_pool_submit_aio(pool, aio_worker, acb, cb, opaque);
}
@@ -1460,7 +1460,7 @@ static BlockDriverAIOCB *hdev_aio_ioctl(BlockDriverState
*bs,
acb->aio_offset = 0;
acb->aio_ioctl_buf = buf;
acb->aio_ioctl_cmd = req;
- pool = aio_get_thread_pool(bdrv_get_aio_context(bs));
+ pool = aio_get_thread_pool(*get_thread_aio_context());
return thread_pool_submit_aio(pool, aio_worker, acb, cb, opaque);
}
diff --git a/block/raw-win32.c b/block/raw-win32.c
index 7c03b6d..b5e59a8 100644
--- a/block/raw-win32.c
+++ b/block/raw-win32.c
@@ -158,7 +158,7 @@ static BlockDriverAIOCB *paio_submit(BlockDriverState *bs,
HANDLE hfile,
acb->aio_offset = sector_num * 512;
trace_paio_submit(acb, opaque, sector_num, nb_sectors, type);
- pool = aio_get_thread_pool(bdrv_get_aio_context(bs));
+ pool = aio_get_thread_pool(*get_thread_aio_context());
return thread_pool_submit_aio(pool, aio_worker, acb, cb, opaque);
}
diff --git a/include/block/block_int.h b/include/block/block_int.h
index ba52247..88c8b52 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -298,13 +298,6 @@ int get_tmp_filename(char *filename, int size);
void bdrv_set_io_limits(BlockDriverState *bs,
BlockIOLimit *io_limits);
-/**
- * bdrv_get_aio_context:
- *
- * Returns: the currently bound #AioContext
- */
-AioContext *bdrv_get_aio_context(BlockDriverState *bs);
-
#ifdef _WIN32
int is_windows_drive(const char *filename);
#endif
--
1.8.1.4
- [Qemu-devel] [RFC 00/13] dataplane: use block layer, Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 01/13] block: fix bdrv_flush() ordering in bdrv_close(), Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 02/13] dataplane: sync virtio.c and vring.c virtqueue state, Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 03/13] block: add BlockDevOps->drain_threads_cb(), Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 04/13] virtio-blk: implement BlockDevOps->drain_threads_cb(), Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 06/13] qemu-thread: add TLS wrappers, Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 07/13] block: add thread_aio_context TLS variable, Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 09/13] main-loop: use thread-local AioContext, Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 10/13] block: disable I/O throttling outside main loop, Stefan Hajnoczi, 2013/06/14
- [Qemu-devel] [RFC 08/13] block: drop bdrv_get_aio_context(),
Stefan Hajnoczi <=
[Qemu-devel] [RFC 12/13] dataplane: drop ioq Linux AIO request queue, Stefan Hajnoczi, 2013/06/14
[Qemu-devel] [RFC 11/13] dataplane: use block layer for I/O, Stefan Hajnoczi, 2013/06/14
[Qemu-devel] [RFC 13/13] block: drop raw_get_aio_fd(), Stefan Hajnoczi, 2013/06/14
[Qemu-devel] [RFC 05/13] exec: do not use qemu/tls.h, Stefan Hajnoczi, 2013/06/14