block: extract bdrv_setup_io_funcs()

Move the code to install coroutine and aio emulation function pointers
in a BlockDriver to its own function.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
This commit is contained in:
Stefan Hajnoczi 2015-04-28 14:27:51 +01:00 committed by Kevin Wolf
parent e0c47b6cb1
commit 0eb7217e49
2 changed files with 14 additions and 1 deletions

View File

@ -349,7 +349,7 @@ void bdrv_get_full_backing_filename(BlockDriverState *bs, char *dest, size_t sz,
dest, sz, errp); dest, sz, errp);
} }
void bdrv_register(BlockDriver *bdrv) void bdrv_setup_io_funcs(BlockDriver *bdrv)
{ {
/* Block drivers without coroutine functions need emulation */ /* Block drivers without coroutine functions need emulation */
if (!bdrv->bdrv_co_readv) { if (!bdrv->bdrv_co_readv) {
@ -365,6 +365,11 @@ void bdrv_register(BlockDriver *bdrv)
bdrv->bdrv_aio_writev = bdrv_aio_writev_em; bdrv->bdrv_aio_writev = bdrv_aio_writev_em;
} }
} }
}
void bdrv_register(BlockDriver *bdrv)
{
bdrv_setup_io_funcs(bdrv);
QLIST_INSERT_HEAD(&bdrv_drivers, bdrv, list); QLIST_INSERT_HEAD(&bdrv_drivers, bdrv, list);
} }

View File

@ -439,6 +439,14 @@ extern BlockDriver bdrv_file;
extern BlockDriver bdrv_raw; extern BlockDriver bdrv_raw;
extern BlockDriver bdrv_qcow2; extern BlockDriver bdrv_qcow2;
/**
* bdrv_setup_io_funcs:
*
* Prepare a #BlockDriver for I/O request processing by populating
* unimplemented coroutine and AIO interfaces with generic wrapper functions
* that fall back to implemented interfaces.
*/
void bdrv_setup_io_funcs(BlockDriver *bdrv);
int get_tmp_filename(char *filename, int size); int get_tmp_filename(char *filename, int size);
BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size, BlockDriver *bdrv_probe_all(const uint8_t *buf, int buf_size,