[libvirt] [PATCH v2 2/2] storage: RBD: do not return error when deleting non-existent volume

Erik Skultety eskultet at redhat.com
Tue Jun 2 13:06:45 UTC 2015



On 06/02/2015 02:47 PM, Martin Kletzander wrote:
> On Thu, May 28, 2015 at 05:29:55PM +0200, Erik Skultety wrote:
>> RBD API returns negative value of errno, in that case we can silently
>> ignore if RBD tries to delete a non-existent volume, just like FS
>> backend does.
>> ---
>> src/storage/storage_backend_rbd.c | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/storage/storage_backend_rbd.c
>> b/src/storage/storage_backend_rbd.c
>> index ae4bcb3..8e8d7a7 100644
>> --- a/src/storage/storage_backend_rbd.c
>> +++ b/src/storage/storage_backend_rbd.c
>> @@ -1,7 +1,7 @@
>> /*
>>  * storage_backend_rbd.c: storage backend for RBD (RADOS Block Device)
>> handling
>>  *
>> - * Copyright (C) 2013-2014 Red Hat, Inc.
>> + * Copyright (C) 2013-2015 Red Hat, Inc.
>>  * Copyright (C) 2012 Wido den Hollander
> 
> I wonder how come nobody complained in reply to this patch already...
> 
>>  *
>>  * This library is free software; you can redistribute it and/or
>> @@ -426,7 +426,7 @@ static int
>> virStorageBackendRBDDeleteVol(virConnectPtr conn,
>>     VIR_DEBUG("Removing RBD image %s/%s", pool->def->source.name,
>> vol->name);
>>
>>     if (flags & VIR_STORAGE_VOL_DELETE_ZEROED)
>> -        VIR_WARN("%s", _("This storage backend does not supported
>> zeroed removal of volumes"));
>> +        VIR_WARN("%s", _("This storage backend does not support
>> zeroed removal of volumes"));
>>
> 
> This could be another trivial patch, but it's *so* trivial, I'm OK
> with keeping it here.
> 
>>     if (virStorageBackendRBDOpenRADOSConn(&ptr, conn,
>> &pool->def->source) < 0)
>>         goto cleanup;
>> @@ -435,7 +435,7 @@ static int
>> virStorageBackendRBDDeleteVol(virConnectPtr conn,
>>         goto cleanup;
>>
>>     r = rbd_remove(ptr.ioctx, vol->name);
>> -    if (r < 0) {
>> +    if (r < 0 && (-r) != ENOENT) {
> 
> This makes sense.  ACK.
> 
>>         virReportSystemError(-r, _("failed to remove volume '%s/%s'"),
>>                              pool->def->source.name, vol->name);
>>         goto cleanup;
>> -- 
>> 1.9.3
>>
>> -- 
>> libvir-list mailing list
>> libvir-list at redhat.com
>> https://www.redhat.com/mailman/listinfo/libvir-list
> 
> 
> --
> libvir-list mailing list
> libvir-list at redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list
> 

Thank you for review :), both are now pushed.
Erik




More information about the libvir-list mailing list