[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 1.8 5/6] qemu-img: add option to align writes to
From: |
Paolo Bonzini |
Subject: |
Re: [Qemu-devel] [PATCH 1.8 5/6] qemu-img: add option to align writes to cluster_sectors during convert |
Date: |
Mon, 25 Nov 2013 16:11:36 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130923 Thunderbird/17.0.9 |
Il 25/11/2013 14:57, Peter Lieven ha scritto:
> Signed-off-by: Peter Lieven <address@hidden>
Ok, given this patch I think the cluster_size is the right one to use
here---and also the way you used the optimal unmap granularity makes
sense; you could also use MAX(optimal unmap granularity, optimal
transfer length granularity).
However, there is no need to write one cluster at a time. What matters,
I think, is to align the *end* of the transfer, so that the next
transfer can start aligned.
> + if (align && cluster_sectors > 0) {
> + int64_t next_aligned_sector = (sector_num + cluster_sectors);
So this should be "+ n", not "+ cluster_sectors".
Perhaps it could be conditional on "n > cluster_sectors" (small requests
happen when you have sparse region, and breaking them doesn't help).
Finally, I believe there is no need for a separate "-a" knob.
The patch looks fine to me with these small changes, though.
Also, a couple of ideas for separate patches. Perhaps the default value
of "-S" could be cluster_size if specified? This would avoid making raw
images too fragmented, and compounding filesystem-level fragmentation
with qcow2-level fragmentation. And 4K is too small a default in my
opinion; it could be easily changed to 64K, though 4K was of course an
improvement compared to 512 before commit a22f123 (qemu-img: Require
larger zero areas for sparse handling, 2011-08-26).
Paolo
> + next_aligned_sector -= next_aligned_sector % cluster_sectors;
> + if (sector_num + n > next_aligned_sector) {
> + n = next_aligned_sector - sector_num;
> + }
> + }
> +
> if (n > bs_offset + bs_sectors - sector_num) {
> n = bs_offset + bs_sectors - sector_num;
> }
> diff --git a/qemu-img.texi b/qemu-img.texi
> index 87f9d0f..9b1720f 100644
> --- a/qemu-img.texi
> +++ b/qemu-img.texi
> @@ -179,11 +179,14 @@ Error on reading data
>
> @end table
>
> address@hidden convert [-c] [-p] [-n] [-f @var{fmt}] [-t @var{cache}] [-O
> @var{output_fmt}] [-o @var{options}] [-s @var{snapshot_name}] [-S
> @var{sparse_size}] [-m @var{iobuf_size}] @var{filename} address@hidden [...]]
> @var{output_filename}
> address@hidden convert [-c] [-p] [-n] [-a] [-f @var{fmt}] [-t @var{cache}]
> [-O @var{output_fmt}] [-o @var{options}] [-s @var{snapshot_name}] [-S
> @var{sparse_size}] [-m @var{iobuf_size}] @var{filename} address@hidden [...]]
> @var{output_filename}
>
> Convert the disk image @var{filename} or a snapshot @var{snapshot_name} to
> disk image @var{output_filename}
> using format @var{output_fmt}. It can be optionally compressed (@code{-c}
> option) or use any format specific options like encryption (@code{-o}
> option).
> +If the @code{-a} option is specified write requests will be aligned
> +to the cluster size of the output image if possible. This is the default
> +for compressed images.
>
> Only the formats @code{qcow} and @code{qcow2} support compression. The
> compression is read-only. It means that if a compressed sector is
>
- Re: [Qemu-devel] [PATCH 1.8 3/6] qemu-img: add option to specify alternate iobuffer size, (continued)
- [Qemu-devel] [PATCH 1.8 2/6] qemu-img: fix usage instruction for qemu-img convert, Peter Lieven, 2013/11/25
- [Qemu-devel] [PATCH 1.8 1/6] qemu-img: add support for skipping zeroes in input during convert, Peter Lieven, 2013/11/25
- [Qemu-devel] [PATCH 1.8 4/6] block/iscsi: set bdi->cluster_size, Peter Lieven, 2013/11/25
- [Qemu-devel] [PATCH 1.8 6/6] qemu-img: add option to show progress in sectors, Peter Lieven, 2013/11/25
- [Qemu-devel] [PATCH 1.8 5/6] qemu-img: add option to align writes to cluster_sectors during convert, Peter Lieven, 2013/11/25
- Re: [Qemu-devel] [PATCH 1.8 5/6] qemu-img: add option to align writes to cluster_sectors during convert,
Paolo Bonzini <=
- Re: [Qemu-devel] [PATCH 1.8 5/6] qemu-img: add option to align writes to cluster_sectors during convert, Peter Lieven, 2013/11/25
- Re: [Qemu-devel] [PATCH 1.8 5/6] qemu-img: add option to align writes to cluster_sectors during convert, Paolo Bonzini, 2013/11/25