Re: [PATCH] esx: Rework datastore path parsing and handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2010/9/1 Eric Blake <eblake@xxxxxxxxxx>:
> On 08/26/2010 04:37 PM, Matthias Bolte wrote:
>>
>> Instead of splitting the path part of a datastore path into
>> directory and file name, keep this in one piece. An example:
>>
>>   "[datastore] directory/file"
>>
>> was split into this before:
>>
>>   datastoreName = "datastore"
>>   directoryName = "directory"
>>   fileName = "file"
>>
>> Now it's split into this:
>>
>>   datastoreName = "datastore"
>>   directoryName = "directory"
>>   directoryAndFileName = "directory/file"
>
> Seems reasonable.
>
>> This simplifies code using esxUtil_ParseDatastorePath, because
>> directoryAndFileName is used more often than fileName. Also the
>> old approach expected the datastore path to reference a actual
>
> s/ a / an /

I'll fix that before pushing.

>> @@ -52,8 +52,7 @@ typedef struct _esxVMX_Data esxVMX_Data;
>>
>>  struct _esxVMX_Data {
>>      esxVI_Context *ctx;
>> -    const char *datastoreName;
>> -    const char *directoryName;
>> +    char *datastorePathWithoutFileName;
>
> I guess losing the const here is okay.

It should have never been const in the first place.

>> @@ -2612,8 +2608,9 @@ esxDomainDumpXML(virDomainPtr domain, int flags)
>>      esxVI_ObjectContent_Free(&virtualMachine);
>>      VIR_FREE(datastoreName);
>>      VIR_FREE(directoryName);
>> -    VIR_FREE(fileName);
>> +    VIR_FREE(directoryAndFileName);
>>      VIR_FREE(url);
>> +    VIR_FREE(data.datastorePathWithoutFileName);
>>      VIR_FREE(vmx);
>>      virDomainDefFree(def);
>>
>> @@ -2640,8 +2637,7 @@ esxDomainXMLFromNative(virConnectPtr conn, const
>> char *nativeFormat,
>>      }
>>
>>      data.ctx = priv->primary;
>> -    data.datastoreName = "?";
>> -    data.directoryName = "?";
>> +    data.datastorePathWithoutFileName = (char *)"[?] ?";
>
> Are you missing a strdup() here?  I'm worried that the
> VIR_FREE(data.datastorePathWithoutFileName) in esxDomainDumpXML will now try
> to free static storage.

This is in esxDomainXMLFromNative, data.datastorePathWithoutFileName
doesn't get freed here, so not strdup'ing is fine here.

In esxDomainDumpXML data.datastorePathWithoutFileName is allocated via
virAsprintf and therefore it need to be freed in esxDomainDumpXML.

So nothing to change here.

>> diff --git a/src/esx/esx_storage_driver.c b/src/esx/esx_storage_driver.c
>> index af8876a..d2d8f22 100644
>> --- a/src/esx/esx_storage_driver.c
>> +++ b/src/esx/esx_storage_driver.c
>> @@ -611,10 +611,8 @@ esxStoragePoolListStorageVolumes(virStoragePoolPtr
>> pool, char **const names,
>>      esxVI_HostDatastoreBrowserSearchResults *searchResultsList = NULL;
>>      esxVI_HostDatastoreBrowserSearchResults *searchResults = NULL;
>>      esxVI_FileInfo *fileInfo = NULL;
>> -    char *datastoreName = NULL;
>> -    char *directoryName = NULL;
>> -    char *fileName = NULL;
>> -    char *prefix = NULL;
>> +    char *directoryAndFileName = NULL;
>> +    int length;
>
> s/int/size_t/
>
>> +++ b/src/esx/esx_vi.c
>> @@ -2946,7 +2946,9 @@ esxVI_LookupFileInfoByDatastorePath(esxVI_Context
>> *ctx,
>>      int result = -1;
>>      char *datastoreName = NULL;
>>      char *directoryName = NULL;
>> +    char *directoryAndFileName = NULL;
>>      char *fileName = NULL;
>> +    int length;
>
> s/int/size_t/

I'll fix those two before pushing.

Matthias

--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list



[Index of Archives]     [Virt Tools]     [Libvirt Users]     [Lib OS Info]     [Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [KDE Users]     [Fedora Tools]