Re: [PATCH] Fix directory removal in virStorageBackendFileSystemVolDelete

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

 



On 07/11/2012 05:42 PM, Daniel P. Berrange wrote:
> On Wed, Jul 11, 2012 at 03:21:27PM +0200, Sascha Peilicke wrote:
>> ---
>>  src/storage/storage_backend_fs.c |   28 +++++++++++++++++++++++-----
>>  1 file changed, 23 insertions(+), 5 deletions(-)
>>
>> diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
>> index 4894994..df0aaf8 100644
>> --- a/src/storage/storage_backend_fs.c
>> +++ b/src/storage/storage_backend_fs.c
>> @@ -1127,7 +1127,7 @@ virStorageBackendFileSystemVolBuildFrom(virConnectPtr conn,
>>  }
>>  
>>  /**
>> - * Remove a volume - just unlinks for now
>> + * Remove a volume - no support for BLOCK and NETWORK yet
>>   */
>>  static int
>>  virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED,
>> @@ -1137,14 +1137,32 @@ virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED,
>>  {
>>      virCheckFlags(0, -1);
>>  
>> -    if (unlink(vol->target.path) < 0) {
>> -        /* Silently ignore failures where the vol has already gone away */
>> -        if (errno != ENOENT) {
>> +    switch (vol->type) {
>> +    case VIR_STORAGE_VOL_FILE:
>> +        if (unlink(vol->target.path) < 0) {
>> +            /* Silently ignore failures where the vol has already gone away */
>> +            if (errno != ENOENT) {
>> +                virReportSystemError(errno,
>> +                                     _("cannot unlink file '%s'"),
>> +                                     vol->target.path);
>> +                return -1;
>> +            }
>> +        }
>> +        break;
>> +    case VIR_STORAGE_VOL_DIR:
>> +        if (rmdir(vol->target.path) < 0) {
>>              virReportSystemError(errno,
>> -                                 _("cannot unlink file '%s'"),
>> +                                 _("cannot remove directory '%s'"),
>>                                   vol->target.path);
>>              return -1;
>>          }
>> +        break;
>> +    case VIR_STORAGE_VOL_BLOCK:
>> +    case VIR_STORAGE_VOL_NETWORK:
>> +    default:
>> +        virStorageReportError(VIR_ERR_NO_SUPPORT,
>> +                              _("removing block or network volumes is not supported: %s"),
>> +                              vol->target.path);
> 
> Missing 'return -1' line here.
Bummer!

> 
>>      }
>>      return 0;
>>  }
> 
> I fixed that small bug and committed this patch to GIT, adding your
> name to AUTHORS.
Thanks a lot Daniel!

-- 
With kind regards,
Sascha Peilicke
SUSE Linux GmbH, Maxfeldstr. 5, D-90409 Nuernberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer HRB 16746 (AG Nürnberg)



Attachment: signature.asc
Description: OpenPGP digital signature

--
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]