mirror of
https://github.com/qemu/qemu.git
synced 2024-11-23 10:53:37 +08:00
blockdev: adds bdrv_parse_aio to use io_uring
Signed-off-by: Aarushi Mehta <mehta.aaru20@gmail.com> Acked-by: Stefano Garzarella <sgarzare@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 20200120141858.587874-8-stefanha@redhat.com Message-Id: <20200120141858.587874-8-stefanha@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
fcb7a4a4e8
commit
f80f267373
22
block.c
22
block.c
@ -845,6 +845,28 @@ static BlockdevDetectZeroesOptions bdrv_parse_detect_zeroes(QemuOpts *opts,
|
||||
return detect_zeroes;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set open flags for aio engine
|
||||
*
|
||||
* Return 0 on success, -1 if the engine specified is invalid
|
||||
*/
|
||||
int bdrv_parse_aio(const char *mode, int *flags)
|
||||
{
|
||||
if (!strcmp(mode, "threads")) {
|
||||
/* do nothing, default */
|
||||
} else if (!strcmp(mode, "native")) {
|
||||
*flags |= BDRV_O_NATIVE_AIO;
|
||||
#ifdef CONFIG_LINUX_IO_URING
|
||||
} else if (!strcmp(mode, "io_uring")) {
|
||||
*flags |= BDRV_O_IO_URING;
|
||||
#endif
|
||||
} else {
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set open flags for a given discard mode
|
||||
*
|
||||
|
12
blockdev.c
12
blockdev.c
@ -385,13 +385,9 @@ static void extract_common_blockdev_options(QemuOpts *opts, int *bdrv_flags,
|
||||
}
|
||||
|
||||
if ((aio = qemu_opt_get(opts, "aio")) != NULL) {
|
||||
if (!strcmp(aio, "native")) {
|
||||
*bdrv_flags |= BDRV_O_NATIVE_AIO;
|
||||
} else if (!strcmp(aio, "threads")) {
|
||||
/* this is the default */
|
||||
} else {
|
||||
error_setg(errp, "invalid aio option");
|
||||
return;
|
||||
if (bdrv_parse_aio(aio, bdrv_flags) < 0) {
|
||||
error_setg(errp, "invalid aio option");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4672,7 +4668,7 @@ QemuOptsList qemu_common_drive_opts = {
|
||||
},{
|
||||
.name = "aio",
|
||||
.type = QEMU_OPT_STRING,
|
||||
.help = "host AIO implementation (threads, native)",
|
||||
.help = "host AIO implementation (threads, native, io_uring)",
|
||||
},{
|
||||
.name = BDRV_OPT_CACHE_WB,
|
||||
.type = QEMU_OPT_BOOL,
|
||||
|
@ -289,6 +289,7 @@ void bdrv_append(BlockDriverState *bs_new, BlockDriverState *bs_top,
|
||||
void bdrv_replace_node(BlockDriverState *from, BlockDriverState *to,
|
||||
Error **errp);
|
||||
|
||||
int bdrv_parse_aio(const char *mode, int *flags);
|
||||
int bdrv_parse_cache_mode(const char *mode, int *flags, bool *writethrough);
|
||||
int bdrv_parse_discard_flags(const char *mode, int *flags);
|
||||
BdrvChild *bdrv_open_child(const char *filename,
|
||||
|
Loading…
Reference in New Issue
Block a user