On 23.09.2016 16:32, Kevin Wolf wrote: > The option whether or not to use a native AIO interface really isn't a > generic option for all drivers, but only applies to the native file > protocols. This patch moves the option in blockdev-add to the > appropriate places (raw-posix and raw-win32). > > We still have to keep the flag BDRV_O_NATIVE_AIO for compatibility > because so far the AIO option was usually specified on the wrong layer > (the top-level format driver, which didn't even look at it) and then > inherited by the protocol driver (where it was actually used). We can't > forbid this use except in new interfaces. > > Signed-off-by: Kevin Wolf <[email protected]> > --- > block/raw-posix.c | 44 ++++++++++++++++++++++++--------------- > block/raw-win32.c | 56 > +++++++++++++++++++++++++++++++++++++++++++++----- > qapi/block-core.json | 6 +++--- > tests/qemu-iotests/087 | 4 ++-- > 4 files changed, 83 insertions(+), 27 deletions(-)
[...]
> diff --git a/block/raw-win32.c b/block/raw-win32.c
> index 56f45fe..734bb10 100644
> --- a/block/raw-win32.c
> +++ b/block/raw-win32.c
[...]
> +static bool get_aio_option(QemuOpts *opts, int flags, Error **errp)
> +{
> + BlockdevAioOptions aio, aio_default;
> +
> + aio_default = (flags & BDRV_O_NATIVE_AIO) ? BLOCKDEV_AIO_OPTIONS_NATIVE
> + : BLOCKDEV_AIO_OPTIONS_THREADS;
> + aio = qapi_enum_parse(BlockdevAioOptions_lookup, qemu_opt_get(opts,
> "aio"),
> + BLOCKDEV_AIO_OPTIONS__MAX, aio_default, errp);
> +
> + switch (aio) {
> + case BLOCKDEV_AIO_OPTIONS_NATIVE:
> + return true;
> + case BLOCKDEV_AIO_OPTIONS_THREADS:
> + return false;
> + default:
> + error_setg(errp, "Invalid AIO option");
Any reason for catching this case here but not in raw-posix?
(Not that it really matters, though.)
Max
signature.asc
Description: OpenPGP digital signature
