[libvirt] [PATCH 2/6] storage:dir: .deleteVol callback for ploop volume

Nikolay Shirokovskiy nshirokovskiy at virtuozzo.com
Wed Feb 17 14:33:27 UTC 2016



On 17.02.2016 14:40, Olga Krishtal wrote:
> Deletes whole directory of a ploop volume. To delete ploop image it has
> to be unmounted.
> 
> Signed-off-by: Olga Krishtal <okrishtal at virtuozzo.com>
> ---
>  src/storage/storage_backend.c    | 5 +++++
>  src/storage/storage_backend.h    | 1 +
>  src/storage/storage_backend_fs.c | 5 +++++
>  3 files changed, 11 insertions(+)
> 
> diff --git a/src/storage/storage_backend.c b/src/storage/storage_backend.c
> index d70642e..9f0e020 100644
> --- a/src/storage/storage_backend.c
> +++ b/src/storage/storage_backend.c
> @@ -870,6 +870,11 @@ int virStorageBackendCreatePloop(virConnectPtr conn ATTRIBUTE_UNUSED,
>      return ret;
>  }
>  
> +int virStorageBackendDeletePloop(virStorageVolDefPtr vol)
> +{
> +    return virFileDeleteTree(vol->target.path);
> +}
> +
>  enum {
>      QEMU_IMG_BACKING_FORMAT_NONE = 0,
>      QEMU_IMG_BACKING_FORMAT_FLAG,
> diff --git a/src/storage/storage_backend.h b/src/storage/storage_backend.h
> index 852d6ed..3529755 100644
> --- a/src/storage/storage_backend.h
> +++ b/src/storage/storage_backend.h
> @@ -115,6 +115,7 @@ int virStorageBackendCreatePloop(virConnectPtr conn,
>                                   virStorageVolDefPtr inputvol,
>                                   unsigned int flags);
>  
> +int virStorageBackendDeletePloop(virStorageVolDefPtr vol);
>  
>  virStorageBackendBuildVolFrom
>  virStorageBackendGetBuildVolFromFunction(virStorageVolDefPtr vol,
> diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
> index 80c7e9e..f494fd2 100644
> --- a/src/storage/storage_backend_fs.c
> +++ b/src/storage/storage_backend_fs.c
> @@ -1245,6 +1245,11 @@ virStorageBackendFileSystemVolDelete(virConnectPtr conn ATTRIBUTE_UNUSED,
>      switch ((virStorageVolType) vol->type) {
>      case VIR_STORAGE_VOL_FILE:
>      case VIR_STORAGE_VOL_DIR:
> +        if (vol->target.format == VIR_STORAGE_FILE_PLOOP) {
> +            if (virStorageBackendDeletePloop(vol) < 0)
> +                return -1;
> +            break;
> +        }

Let's get rid of function to be consistent with inplace virFileRemove below.

>          if (virFileRemove(vol->target.path, vol->target.perms->uid,
>                            vol->target.perms->gid) < 0) {
>              /* Silently ignore failures where the vol has already gone away */
> 




More information about the libvir-list mailing list