qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] qemu-img: set nocow flag to new file


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH] qemu-img: set nocow flag to new file
Date: Thu, 14 Nov 2013 10:17:26 +0100
User-agent: Mutt/1.5.21 (2010-09-15)

Am 14.11.2013 um 09:15 hat Chunyan Liu geschrieben:
> Set NOCOW flag to newly created images to solve performance issues on btrfs.
> 
> Btrfs has terrible performance when hosting VM images, even more when the 
> guest
> in those VM are also using btrfs as file system. One way to mitigate this bad
> performance is to turn off COW attributes on VM files (since having copy on
> write for this kind of data is not useful).
> 
> Signed-off-by: Chunyan Liu <address@hidden>
> ---
>  block/raw-posix.c     |    6 ++++++
>  block/vdi.c           |    7 +++++++
>  block/vmdk.c          |    7 +++++++
>  include/qemu-common.h |    9 +++++++++
>  4 files changed, 29 insertions(+), 0 deletions(-)
> 
> diff --git a/block/raw-posix.c b/block/raw-posix.c
> index f6d48bb..4a3e9d0 100644
> --- a/block/raw-posix.c
> +++ b/block/raw-posix.c
> @@ -1072,6 +1072,12 @@ static int raw_create(const char *filename, 
> QEMUOptionParameter *options,
>          result = -errno;
>          error_setg_errno(errp, -result, "Could not create file");
>      } else {
> +#ifdef __linux__
> +        /* set NOCOW flag to solve performance issue on fs like btrfs */
> +        int attr;
> +        attr = FS_NOCOW_FL;
> +        ioctl(fd, FS_IOC_SETFLAGS, &attr);
> +#endif

ioctl() returning an error is ignored. This is probably okay because
we're only talking about an optimisation here. Perhaps worth a word or
two in the comment.

However, while this ioctl is setting FS_NOCOW_FL, it is at the same time
clearing all other flags. This doesn't look right.

Kevin



reply via email to

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