On Wed, Apr 28, 2010 at 11:58:15AM +0100, Daniel P. Berrange wrote:
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.
Yeah I remember the issue, it was rather painful trying to do things
the Right Way actually led to a bug, fairly nasty.
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(a)redhat.com>
Date: Fri Apr 3 14:13:02 2009 +0000
Fix sparse volume allocation reporting.
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit
http://xmlsoft.org/
daniel(a)veillard.com | Rpmfind RPM search engine
http://rpmfind.net/
http://veillard.com/ | virtualization library
http://libvirt.org/