qemu-block
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-block] [PATCH] blockdev: warn about aio=native if libaio is un


From: Kevin Wolf
Subject: Re: [Qemu-block] [PATCH] blockdev: warn about aio=native if libaio is unavailable
Date: Fri, 17 Jul 2015 12:56:15 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

Am 17.07.2015 um 11:59 hat Stefan Hajnoczi geschrieben:
> QEMU silently ignores aio=native if libaio is unavailable.  It is
> confusing when aio=native performance is identical to aio=threads
> because the binary was accidentally built without libaio.
> 
> Use error_report() because failing would break backward compatibility.
> There are probably users using aio=native who would be inconvenienced if
> QEMU suddenly refused to start their guests.
> 
> Signed-off-by: Stefan Hajnoczi <address@hidden>

I hope not too many people are using aio=native without having libaio
compiled in... Can we make it a message like for the case with
aio=native,cache.direct=off, i.e. a deprecation warning that allows us
to make this an error in a few releases?

>  blockdev.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/blockdev.c b/blockdev.c
> index 62a4586..f30828a 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -405,10 +405,14 @@ static BlockBackend *blockdev_init(const char *file, 
> QDict *bs_opts,
>          bdrv_flags |= BDRV_O_NO_FLUSH;
>      }
>  
> -#ifdef CONFIG_LINUX_AIO
>      if ((buf = qemu_opt_get(opts, "aio")) != NULL) {
>          if (!strcmp(buf, "native")) {
> +#ifdef CONFIG_LINUX_AIO
>              bdrv_flags |= BDRV_O_NATIVE_AIO;
> +#else
> +            error_report("warning: aio=native support unavailable, "
> +                         "using default instead");
> +#endif
>          } else if (!strcmp(buf, "threads")) {
>              /* this is the default */
>          } else {
> @@ -416,7 +420,6 @@ static BlockBackend *blockdev_init(const char *file, 
> QDict *bs_opts,
>             goto early_err;
>          }
>      }
> -#endif

*sigh* It's sad to see that we still have such code in the generic block
layer. It has no business there, the raw-posix driver should check
whether it can support Linux AIO or not.

Paolo: You added some code to raw-win32 that implements aio=native.
Did it ever work in qemu proper, or only in the tools? It doesn't seem
that this code would even have added the flag on Windows builds.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]