On 5/5/20 12:38 PM, Alberto Garcia wrote:
> Like offset_into_cluster() and size_to_clusters(), but for
> subclusters.
>
> Signed-off-by: Alberto Garcia <berto@igalia.com>
> ---
> block/qcow2.h | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/block/qcow2.h b/block/qcow2.h
> index e68febb15b..8b1ed1cbcf 100644
> --- a/block/qcow2.h
> +++ b/block/qcow2.h
> @@ -537,11 +537,21 @@ static inline int64_t offset_into_cluster(BDRVQcow2State *s, int64_t offset)
> return offset & (s->cluster_size - 1);
> }
>
> +static inline int64_t offset_into_subcluster(BDRVQcow2State *s, int64_t offset)
> +{
> + return offset & (s->subcluster_size - 1);
> +}
> +
> static inline uint64_t size_to_clusters(BDRVQcow2State *s, uint64_t size)
> {
> return (size + (s->cluster_size - 1)) >> s->cluster_bits;
> }
Pre-existing, but this could use DIV_ROUND_UP.
>
> +static inline uint64_t size_to_subclusters(BDRVQcow2State *s, uint64_t size)
> +{
> + return (size + (s->subcluster_size - 1)) >> s->subcluster_bits;
> +}
at which point, your addition could be:
return DIV_ROUND_UP(size, s->subcluster_size);
Either way,
Reviewed-by: Eric Blake <eblake@redhat.com>
--
Eric Blake, Principal Software Engineer
Red Hat, Inc. +1-919-301-3226
Virtualization: qemu.org | libvirt.org