[libvirt] [PATCH 4/5] Implement virDomainGetBlockInfo in QEMU driver

Daniel P. Berrange berrange at redhat.com
Wed Apr 28 10:58:15 UTC 2010


On Tue, Apr 27, 2010 at 04:43:08PM -0600, Eric Blake wrote:
> On 04/27/2010 01:35 PM, Daniel P. Berrange wrote:
> > * src/qemu/qemu_driver.c: Implementation of virDomainGetBlockInfo
> > * src/util/storage_file.h: Add DEV_BSIZE
> > * src/storage/storage_backend.c: Remove DEV_BSIZE
> 
> > +    if (S_ISREG(sb.st_mode)) {
> > +#ifndef __MINGW32__
> > +        info->physical = (unsigned long long)sb.st_blocks *
> > +            (unsigned long long)DEV_BSIZE;
> 
> Is it worth checking sb.st_blksize rather than DEV_BSIZE on XSI systems
> where that is part of struct stat?  In particular, POSIX allows the
> block size to be file-system dependent, and some file systems (like
> NTFS) have 4k rather than 512 as the block size (is anyone daring enough
> to use NTFS for raw file storage?).

This code is essentially identical to code in storage_backend.c & in
the future I will unify it. We did originally use sb.st_blksize in
the storage_backend.c impl, but this was not actually correct because
it gives the preferred size for efficient I/O, which is not the same
as the filesystem block size :-( Hence we have to hardcode 512.

The commit was this one, sadly no details in the commit message, but
they'll be in the mail archive somewhere:

commit e807e4d9e9a766bd00a89b0a9c179edfad52773c
Author: Cole Robinson <crobinso at redhat.com>
Date:   Fri Apr 3 14:13:02 2009 +0000

    Fix sparse volume allocation reporting.


Regards,
Daniel
-- 
|: Red Hat, Engineering, London    -o-   http://people.redhat.com/berrange/ :|
|: http://libvirt.org -o- http://virt-manager.org -o- http://deltacloud.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