[pve-devel] [PATCH storage] fix #3894: file 'size' and 'used' are not integers

Mira Limbeck m.limbeck at proxmox.com
Thu Feb 17 15:19:22 CET 2022


On 2/17/22 15:10, Fabian Ebner wrote:
> Am 17.02.22 um 14:33 schrieb Mira Limbeck:
>> On 2/17/22 14:24, Fabian Ebner wrote:
>>> Am 17.02.22 um 13:55 schrieb Mira Limbeck:
>>>> 'qemu-img info' with output format 'json' returns the size and used
>>>> values as
>>>> integers, but the regex match converts them to strings.
>>>> As we know they only contain digits, we can simply cast them back to
>>>> integers
>>>> after the regex.
>>>>
>>>> The API requires them to be integers.
>>>>
>>> Any reason for not doing it in the API call itself? That would cover all
>>> plugins and future changes.
>> The main reason is that we call volume_size_info (which forwards to
>> file_size_info in most cases) and file_size_info in other parts of our
>> code as well. Wouldn't it be more consistent for `size` and `used` to be
>> integers in every context, rather than just in that specific API call?
> It doesn't hurt to do it, but it's not persistent, because Perl has no
> real types. If it's used as a string some time later (e.g. printed),
> it'll be a "string" again.
>
> When converting to JSON, the result depends on how the variable was last
> used, so IMHO it should happen as close to that point as possible.
>
Yes, that's what lead to this situation in the first place.

I'll send a v2 then with both this change and the cast in the API call.






More information about the pve-devel mailing list