all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Fiona Ebner <f.ebner@proxmox.com>
To: Thomas Lamprecht <t.lamprecht@proxmox.com>,
	Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH storage] plugin: file size info: use fallback for actual size
Date: Thu, 12 Jan 2023 09:33:51 +0100	[thread overview]
Message-ID: <81b59658-e60d-6899-dc73-4e5b02b151b9@proxmox.com> (raw)
In-Reply-To: <b2ff06be-a653-22bd-224e-5617e367d5d2@proxmox.com>

Am 11.01.23 um 16:46 schrieb Thomas Lamprecht:
> Am 28/11/2022 um 16:55 schrieb Fiona Ebner:
>> The actual-size property is an optional property in the QAPI
>> definition for ImageInfo. If it's not set, simply use the information
>> from stat() as a fallback. This is essentially the same
>> raw_get_allocated_file_size() in QEMU does anyways.
>>
>> Reported in the community forum:
>> https://forum.proxmox.com/threads/118443/post-513421
>>
>> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
>> ---
>>
>> Thanks to Mira for setting up a GlusterFS instance and discussing the
>> issue with me!
>>
>> I'm not sure why QEMU fails here, didn't see much that could go wrong
>> beside the fstat() call failing. But our stat() call in the beginning
>> of file_size_info already succeeded at that point :/ The mysteries of
>> QEMU+GlusterFS.
>>
>> Also, it's a bit strange to call qemu-img info regardless of whether
>> the image is a VM image or not. E.g., this results in the format
>> property for backups to always be raw, rather than the backup format.
>> Should we change that (for 8.0)?
>>
>>  PVE/Storage/Plugin.pm | 1 +
>>  1 file changed, 1 insertion(+)
>>
>> diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
>> index 8a41df1..7773ac3 100644
>> --- a/PVE/Storage/Plugin.pm
>> +++ b/PVE/Storage/Plugin.pm
>> @@ -899,6 +899,7 @@ sub file_size_info {
>>      }
>>  
>>      my ($size, $format, $used, $parent) = $info->@{qw(virtual-size format actual-size backing-filename)};
>> +    $used ||= $st->blocks * 512;
> 
> in general OK, but can we really be sure that blocks are always 512 bytes?
> 

Initially, I only checked 'man 2 stat' where this is the case:
>                blkcnt_t  st_blocks;      /* Number of 512B blocks allocated */

But checking again now, 'perldoc -f stat' (File::stat mentions it uses
Perl's builtin stat()) actually states:
>              12 blocks   actual number of system-specific blocks allocated
>                          on disk (often, but not always, 512 bytes each)

Trying to decipher the Perl 5 source code, I /think/ it will just use
stat(2) on Linux (a quick check with strace seems to confirm this) and
I'd say it would be surprising if not, but I'm not 100% sure.

That said, the original issue here was GlusterFS reporting an incorrect
value (see the forum thread). The new fallback introduced by this patch
would only help if 'qemu-img info' fails to determine the size for some
other reason (it also just does st_blocks * 512 in
raw_get_allocated_file_size()), so I'm not sure the patch is even worth
it after all.




  reply	other threads:[~2023-01-12  8:33 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-28 15:55 Fiona Ebner
2023-01-11 15:46 ` Thomas Lamprecht
2023-01-12  8:33   ` Fiona Ebner [this message]
2023-01-13 11:50     ` Wolfgang Bumiller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=81b59658-e60d-6899-dc73-4e5b02b151b9@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    --cc=t.lamprecht@proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal