[libvirt] [PATCH] Fix sparse volume allocation reporting

Daniel P. Berrange berrange at redhat.com
Thu Apr 2 18:43:03 UTC 2009


On Thu, Apr 02, 2009 at 02:39:58PM -0400, Cole Robinson wrote:
> Daniel P. Berrange wrote:
> > On Thu, Mar 26, 2009 at 05:55:00PM +0100, Daniel Veillard wrote:
> >>   So I agree with Dan, we need to drop st_blksize in any volume size
> >> computation, and fallback to 512 if not defined, apparently only
> >> src/storage_backend.c referenced it :-)
> >>
> >>   I still find the "It may differ on a file system basis" to be a bit
> >> frightening considering the sandard doesn't seems to indicate how to
> >> extract that information from the filesystem :-( , oh well ...
> > 
> > I guess if we come across a filesystem where it is not 512, then someone
> > will have created an ioctl() or equivalent to let us find out the true
> > value. Failing that, relying on 512 seems like a good plan.
> > 
> > Daniel
> 
> Okay, updated patch attached.

ACK, looks good to me.


> commit 3f289f7c1ea04cb5d14bf125959ba41b13b64443
> Author: Cole Robinson <crobinso at redhat.com>
> Date:   Wed Apr 1 16:00:58 2009 -0400
> 
>     Fix sparse volume allocation reporting.
> 
> diff --git a/src/storage_backend.c b/src/storage_backend.c
> index 71b8020..79c070c 100644
> --- a/src/storage_backend.c
> +++ b/src/storage_backend.c
> @@ -36,6 +36,7 @@
>  #include <fcntl.h>
>  #include <stdint.h>
>  #include <sys/stat.h>
> +#include <sys/param.h>
>  #include <dirent.h>
>  
>  #if HAVE_SELINUX
> @@ -64,6 +65,9 @@
>  #include "storage_backend_fs.h"
>  #endif
>  
> +#ifndef DEV_BSIZE
> +#define DEV_BSIZE 512
> +#endif
>  
>  #define VIR_FROM_THIS VIR_FROM_STORAGE
>  
> @@ -211,7 +215,7 @@ virStorageBackendUpdateVolTargetInfoFD(virConnectPtr conn,
>          if (S_ISREG(sb.st_mode)) {
>  #ifndef __MINGW32__
>              *allocation = (unsigned long long)sb.st_blocks *
> -                (unsigned long long)sb.st_blksize;
> +                          (unsigned long long)DEV_BSIZE;
>  #else
>              *allocation = sb.st_size;
>  #endif


Daniel
-- 
|: Red Hat, Engineering, London   -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org  -o-  http://virt-manager.org  -o-  http://ovirt.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: GnuPG: 7D3B9505  -o-  F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :|




More information about the libvir-list mailing list