[libvirt] [PATCH 3/4] vol-info: Check for NFS FS type

John Ferlan jferlan at redhat.com
Fri Aug 8 15:26:15 UTC 2014



On 08/08/2014 07:07 AM, Ján Tomko wrote:
> On 08/05/2014 04:38 PM, John Ferlan wrote:
>> https://bugzilla.redhat.com/show_bug.cgi?id=1077068
>>
>> Check for the NFS FS type being true for a "local" stat of the file
>> to force usage of the 'st_size' value rather than calculating the size
>> using the 'st_blocks' and 'st_blksize'.  As described in the stat(2)
>> man page:
>>
>> "Use of the st_blocks and st_blksize fields may be less portable."
>>
>> experimentation shows a 10M file could get the following output from stat:
>>
>>   st_size=10485760 st_blocks=88 st_blksize=1048576
>>
>> resulting in a "44 KiB" value being displayed as the allocation value.
>> While this value does match the "du -s" value of the same file, the
>> "du -b" value shows the "st_size" field. Similarly a long listing of the
>> file shows the 10M size.
> 
> Capacity should be the apparent size (what du -b shows, or st_size), while
> allocation should track the on-disk usage (du, st_blocks * 512).
> 
> It looks to me that the values are correct, it's just that posix_fallocate
> does neither work nor fail on NFS.
> 
> Jan
> 

Testing seems to indicate that posix_fallocate() either doesn't work as
expected on the target or using the target.path is incorrect...

Before posix_fallocate
stat st_blocks=0 st_blksize=1048576 st_size=10485760
lseek end=10485760

posix_fallocate of 10485760 bytes on /home/nfs_pool/target/test-vol1

After posix_fallocate
stat st_blocks=88 st_blksize=1048576 st_size=10485760
lseek end=10485760


Hmm... would going at the target be correct in this instance?  Same test
but use the source path:

Before posix_fallocate
stat st_blocks=0 st_blksize=4096 st_size=10485760
lseek end=10485760

posix_fallocate of 10485760 bytes on /home/nfs_pool/nfs-export/test-vol1

After posix_fallocate
stat st_blocks=20480 st_blksize=4096 st_size=10485760
lseek end=10485760

...

hmm.... 20480 * 512 = 10485760

# df
...
localhost:/home/nfs_pool/nfs-export 140979200 35521536  98273280  27%
/home/nfs_pool/target
#


John





More information about the libvir-list mailing list