[libvirt] [libvirt-php] Add volume clone support
Lyre
liyong at skybility.com
Mon Mar 28 10:35:53 UTC 2011
于 2011年03月28日 17:19, Michal Novotny 写道:
> Hi Lyre,
> I'm having some (inline) comments to consider...
>
>> - struct _virDomainMemoryStat stats[VIR_DOMAIN_MEMORY_STAT_NR];
>> +
>> + struct _virDomainMemoryStat stats[VIR_DOMAIN_MEMORY_STAT_NR] =
>> + {
>> + {VIR_DOMAIN_MEMORY_STAT_SWAP_IN, 0},
>> + {VIR_DOMAIN_MEMORY_STAT_SWAP_OUT, 0},
>> + {VIR_DOMAIN_MEMORY_STAT_MAJOR_FAULT, 0},
>> + {VIR_DOMAIN_MEMORY_STAT_MINOR_FAULT, 0},
>> + {VIR_DOMAIN_MEMORY_STAT_UNUSED, 0},
>> + {VIR_DOMAIN_MEMORY_STAT_AVAILABLE, 0},
>> + };
>
> Why did you change this in patch that's about adding
> libvirt_storagevolume_create_xml_from() API ? Please resubmit this again
> in a separate patch stating reasons why to change this. It's OK with me
> to make such a change if you put some information why are you changing
> this either to comment or a commit message but it's rather confusing
> when you don't mention reason why to change this anywhere so please
> resubmit as a new patch.
>
>
>>
>> GET_DOMAIN_FROM_ARGS("r|l",&zdomain,&flags);
>>
>> @@ -2804,6 +2814,51 @@ PHP_FUNCTION(libvirt_storagevolume_create_xml)
>> }
>>
>> /*
>> + Function name: libvirt_storagevolume_create_xml_from
>> + Since version: 0.4.1(-2)
>> + Description: Function is used to clone the new storage volume into pool from the orignial volume
>> + Arguments: @pool [resource]: libvirt storagepool resource
>> + @xml [string]: XML string to create the storage volume in the storage pool
>> + @original_volume [resource]: libvirt storagevolume resource
>> + Returns: libvirt storagevolume resource
>> +*/
>> +PHP_FUNCTION(libvirt_storagevolume_create_xml_from)
>> +{
>> + php_libvirt_volume *res_volume=NULL;
>> + php_libvirt_storagepool *pool=NULL;
>> + zval *zpool;
>> +
>> + php_libvirt_volume *pl_volume=NULL;
>> + zval *zvolume;
>> +
>> + virStorageVolPtr volume=NULL;
>> + char *xml;
>> + int xml_len;
>> +
>> + if (zend_parse_parameters (ZEND_NUM_ARGS() TSRMLS_CC, "rsr",&zpool,&xml,&xml_len,&zvolume) == FAILURE)
>> + {
>> + RETURN_FALSE;
>> + }
>> +
>> + ZEND_FETCH_RESOURCE (pool, php_libvirt_storagepool*,&zpool, -1, PHP_LIBVIRT_STORAGEPOOL_RES_NAME, le_libvirt_storagepool);
>> + if ((pool==NULL)||(pool->pool==NULL))RETURN_FALSE;
>> + ZEND_FETCH_RESOURCE (pl_volume, php_libvirt_volume*,&zvolume, -1, PHP_LIBVIRT_VOLUME_RES_NAME, le_libvirt_volume);
>> + if ((pl_volume==NULL)||(pl_volume->volume==NULL))RETURN_FALSE;
>> +
>> + volume=virStorageVolCreateXMLFrom(pool->pool,xml, pl_volume->volume, 0);
>> + if (volume==NULL)
>> + {
>> + set_error ("Cannot create new volume" TSRMLS_CC);
>
> Why are you setting up the error using set_error() there? Please see
> virStorageVolCreateXMLFrom() documentation at
> http://libvirt.org/html/libvirt-libvirt.html#virStorageVolCreateXMLFrom
> . It should be setting NULL on error and the error should be caught by
> the catch_error() function which already calls the set_error() with
> appropriate arguments, i.e. it's already setting up the libvirt error
> string into the last_error string. Please avoid this one.
>
>
>> + RETURN_FALSE;
>> + }
>> +
>> + res_volume= emalloc(sizeof(php_libvirt_volume));
>> + res_volume->volume = volume;
>> +
>> + ZEND_REGISTER_RESOURCE(return_value, res_volume, le_libvirt_volume);
>> +}
>> +
>> +/*
>> Function name: libvirt_storagepool_get_uuid_string
>> Since version: 0.4.1(-1)
>> Description: Function is used to get storage pool by UUID string
>> @@ -3058,7 +3113,7 @@ PHP_FUNCTION(libvirt_storagepool_refresh)
>> zval *zpool;
>> unsigned long flags = 0;
>>
>> - GET_STORAGEPOOL_FROM_ARGS ("rl",&zpool,&flags);
>> + GET_STORAGEPOOL_FROM_ARGS ("r|l",&zpool,&flags);
>
> You should mention this change in the commit message or code comment as
> well.
>
> Please resubmit v2 for the new API only and another patch for the fixes
> (virDomainMemoryStat bits and libvirt_storagepool_refresh bits).
>
> You're doing great however there are some things that should be changed
> so please don't take this as a bad thing. It's just a kind of adjustment
> how we should write the codes/patches.
>
> Thanks a lot!
> Michal
>
Hi Michal:
Sorry about that, I didn't noticed the error handling mechanism in
libvirt before.
I've been overloaded these days. And I'll resent those patches.
t
More information about the libvir-list
mailing list