[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v2 07/13] block: drop bdrv_get_aio_context()
From: |
Stefan Hajnoczi |
Subject: |
[Qemu-devel] [PATCH v2 07/13] block: drop bdrv_get_aio_context() |
Date: |
Mon, 15 Jul 2013 22:42:56 +0800 |
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 7c5931d..26644ec 100644
--- a/block.c
+++ b/block.c
@@ -4584,12 +4584,6 @@ out:
}
}
-AioContext *bdrv_get_aio_context(BlockDriverState *bs)
-{
- /* Currently BlockDriverState always uses the main loop AioContext */
- return qemu_get_aio_context();
-}
-
void bdrv_add_before_write_notifier(BlockDriverState *bs,
NotifierWithReturn *notifier)
{
diff --git a/block/raw-posix.c b/block/raw-posix.c
index ba721d3..e8eb396 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(*tls_get_thread_aio_context());
return thread_pool_submit_aio(pool, aio_worker, acb, cb, opaque);
}
@@ -1462,7 +1462,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(*tls_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 9b5b2af..2d57d75 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(*tls_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 c6ac871..cd0e0a8 100644
--- a/include/block/block_int.h
+++ b/include/block/block_int.h
@@ -319,13 +319,6 @@ void bdrv_set_io_limits(BlockDriverState *bs,
void bdrv_add_before_write_notifier(BlockDriverState *bs,
NotifierWithReturn *notifier);
-/**
- * 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] [PATCH v2 00/13] dataplane: use block layer, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 01/13] dataplane: sync virtio.c and vring.c virtqueue state, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 02/13] block: add BlockDevOps->drain_threads_cb(), Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 03/13] virtio-blk: implement BlockDevOps->drain_threads_cb(), Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 04/13] exec: do not use qemu/tls.h, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 05/13] qemu-thread: add TLS wrappers, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 06/13] block: add thread_aio_context TLS variable, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 07/13] block: drop bdrv_get_aio_context(),
Stefan Hajnoczi <=
- [Qemu-devel] [PATCH v2 09/13] linux-aio: bind EventNotifier to current AioContext, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 08/13] main-loop: use thread-local AioContext, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 10/13] block: disable I/O throttling outside main loop, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 11/13] dataplane: use block layer for I/O, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 12/13] dataplane: drop ioq Linux AIO request queue, Stefan Hajnoczi, 2013/07/15
- [Qemu-devel] [PATCH v2 13/13] block: drop raw_get_aio_fd(), Stefan Hajnoczi, 2013/07/15
- Re: [Qemu-devel] [PATCH v2 00/13] dataplane: use block layer, Paolo Bonzini, 2013/07/15