[libvirt] [PATCH] storage: Round up capacity for LVM volume creation

Osier Yang jyang at redhat.com
Mon Jan 24 05:09:24 UTC 2011


于 2011年01月24日 11:02, Daniel Veillard 写道:
> On Sat, Jan 22, 2011 at 07:18:00PM +0800, Osier Yang wrote:
>> If vol->capacity is odd, the capacity will be rounded down
>> by devision, this patch is to round it up instead of rounding
>> down, to be safer in case of one writes to the volume with the
>> size he used to create.
>>
>> * src/storage/storage_backend_logical.c
>> ---
>>   src/storage/storage_backend_logical.c |    5 ++++-
>>   1 files changed, 4 insertions(+), 1 deletions(-)
>>
>> diff --git a/src/storage/storage_backend_logical.c b/src/storage/storage_backend_logical.c
>> index 203fe5d..2057692 100644
>> --- a/src/storage/storage_backend_logical.c
>> +++ b/src/storage/storage_backend_logical.c
>> @@ -604,7 +604,10 @@ virStorageBackendLogicalCreateVol(virConnectPtr conn,
>>           cmdargv = cmdargvsnap;
>>       }
>>
>> -    snprintf(size, sizeof(size)-1, "%lluK", vol->capacity/1024);
>> +    unsigned long long int capacity;
>> +    capacity = vol->capacity/1024 + (vol->capacity%1024>  0 ? 1 : 0);
>> +
>> +    snprintf(size, sizeof(size)-1, "%lluK", capacity);
>>       size[sizeof(size)-1] = '\0';
>>
>>       vol->type = VIR_STORAGE_VOL_BLOCK;
>
>    To fix such rounding issues I would usually do
>       capacity = (vol->capacity + 1023) /1024;
>
> instead, it's really easier to read :-)

Yeah, it looks much better, will update, thanks. :-)

> But the principle of the patch looks right to me !
>
> Daniel
>




More information about the libvir-list mailing list