
John Ferlan wrote:
On 08/27/2014 05:02 AM, Roman Bogorodskiy wrote:
Currently, after calling commands to create a new volumes, virStorageBackendZFSCreateVol calls virStorageBackendZFSFindVols that calls virStorageBackendZFSParseVol.
virStorageBackendZFSParseVol checks if a volume already exists by trying to get it using virStorageVolDefFindByName.
For a just created volume it returns NULL, so volume is reported as new and appended to pool->volumes. This causes a volume to be listed twice as storageVolCreateXML appends this new volume to the list as well.
Fix that by passing a new volume definition to virStorageBackendZFSParseVol so it could determine if it needs to add this volume to the list. --- src/storage/storage_backend_zfs.c | 45 ++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 19 deletions(-)
ACK
Although it seems the "main" reason the create backend called the FindVols was to ascertain if the volume was successfully created via the virCommandRun call.
I believe this is safe for 1.2.8
Pushed, thanks! Yeah, this schema looks a little awkward (that's not an excuse for me placing a bug :-) ), but on the other hand, currently there's no function to retrieve information about specific volume and probably it doesn't make sense to introduce one. Roman Bogorodskiy