[libvirt PATCH v2 2/2] storage_file: add support to probe cluster_size from QCOW2 images
Pavel Hrdina
phrdina at redhat.com
Fri May 21 12:03:48 UTC 2021
On Fri, May 21, 2021 at 09:40:21AM +0200, Peter Krempa wrote:
> On Thu, May 20, 2021 at 17:14:32 +0200, Pavel Hrdina wrote:
> > >From QEMU docs/interop/qcow2.txt :
> >
> > Byte 20 - 23: cluster_bits
> > Number of bits that are used for addressing an offset
> > within a cluster (1 << cluster_bits is the cluster size).
> >
> > With this patch libvirt will be able to report the current cluster_size
> > for all existing storage volumes managed by storage driver.
> >
> > Signed-off-by: Pavel Hrdina <phrdina at redhat.com>
> > ---
> >
> > Changes in v2:
> > - Reworkded to use callback.
> >
> > src/storage/storage_util.c | 3 ++
> > src/storage_file/storage_file_probe.c | 70 ++++++++++++++++++++-------
> > 2 files changed, 56 insertions(+), 17 deletions(-)
>
> [...]
>
> > @@ -468,6 +477,28 @@ qcow2GetExtensions(const char *buf,
> > }
> >
> >
> > +static unsigned long long
> > +qcow2GetClusterSize(const char *buf,
> > + size_t buf_size,
> > + int endian)
>
> The 'endian' argument makes sense only for generic getters. You know
> that qcow2 has always LV_BIG_ENDIAN set.
>
> > +{
> > + int clusterBits = 0;
> > +
> > + if ((QCOWX_HDR_CLUSTER_BITS_OFFSET + 4) > buf_size)
> > + return 0;
> > +
> > + if (endian == LV_LITTLE_ENDIAN)
> > + clusterBits = virReadBufInt32LE(buf + QCOWX_HDR_CLUSTER_BITS_OFFSET);
> > + else
> > + clusterBits = virReadBufInt32BE(buf + QCOWX_HDR_CLUSTER_BITS_OFFSET);
> > +
> > + if (clusterBits > 0)
> > + return 1 << clusterBits;
> > +
> > + return 0;
> > +}
>
> Drop the 'endian' argument with appropriate cleanup and:
>
> Reviewed-by: Peter Krempa <pkrempa at redhat.com>
Fixed and pushed. Thanks for the review.
Pavel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20210521/67c6fb97/attachment-0001.sig>
More information about the libvir-list
mailing list