[libvirt] [PATCH 1/5] storage: Create helper to generate FS pool source value

Michal Privoznik mprivozn at redhat.com
Tue Dec 15 15:54:52 UTC 2015


On 07.12.2015 21:47, John Ferlan wrote:
> Refactor the code that builds the pool source string during the FS
> storage pool mount to be a separate helper.
> 
> A future patch will use the helper in order to validate the mounted
> FS matches the pool's expectation during poolCheck processing
> 
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>  src/storage/storage_backend_fs.c | 51 +++++++++++++++++++++++++++-------------
>  1 file changed, 35 insertions(+), 16 deletions(-)
> 
> diff --git a/src/storage/storage_backend_fs.c b/src/storage/storage_backend_fs.c
> index 99ea394..ef1a7d0 100644
> --- a/src/storage/storage_backend_fs.c
> +++ b/src/storage/storage_backend_fs.c
> @@ -375,6 +375,39 @@ virStorageBackendFileSystemIsValid(virStoragePoolObjPtr pool)
>      return 0;
>  }
>  
> +
> +/**
> + * virStorageBackendFileSystemGetPoolSource
> + * @pool: storage pool object pointer
> + *
> + * Allocate/return a string representing the FS storage pool source.
> + * It is up to the caller to VIR_FREE the allocated string
> + */
> +static char *
> +virStorageBackendFileSystemGetPoolSource(virStoragePoolObjPtr pool)
> +{
> +    char *src = NULL;
> +
> +    if (pool->def->type == VIR_STORAGE_POOL_NETFS) {
> +        if (pool->def->source.format == VIR_STORAGE_POOL_NETFS_CIFS) {
> +            if (virAsprintf(&src, "//%s/%s",
> +                            pool->def->source.hosts[0].name,
> +                            pool->def->source.dir) == -1)
> +                return NULL;

When touching this, I'd s/== -1/< 0/. Then, these if()-s seem a bit
useless - if virAsprintf() fails, @src is going to be NULL anyway.
Your call if you want to do ignore_value(virAsprintf(...));

> +        } else {
> +            if (virAsprintf(&src, "%s:%s",
> +                            pool->def->source.hosts[0].name,
> +                            pool->def->source.dir) == -1)
> +                return NULL;
> +        }
> +    } else {
> +        if (VIR_STRDUP(src, pool->def->source.devices[0].path) < 0)
> +            return NULL;
> +    }
> +    return src;
> +}
> +
> +
>  /**
>   * @pool storage pool to check for status
>   *
> @@ -445,22 +478,8 @@ virStorageBackendFileSystemMount(virStoragePoolObjPtr pool)
>          return -1;
>      }
>  
> -    if (pool->def->type == VIR_STORAGE_POOL_NETFS) {
> -        if (pool->def->source.format == VIR_STORAGE_POOL_NETFS_CIFS) {
> -            if (virAsprintf(&src, "//%s/%s",
> -                            pool->def->source.hosts[0].name,
> -                            pool->def->source.dir) == -1)
> -                return -1;
> -        } else {
> -            if (virAsprintf(&src, "%s:%s",
> -                            pool->def->source.hosts[0].name,
> -                            pool->def->source.dir) == -1)
> -                return -1;
> -        }
> -    } else {
> -        if (VIR_STRDUP(src, pool->def->source.devices[0].path) < 0)
> -            return -1;
> -    }
> +    if (!(src = virStorageBackendFileSystemGetPoolSource(pool)))
> +        return -1;
>  
>      if (netauto)
>          cmd = virCommandNewArgList(MOUNT,
> 

ACK

Michal




More information about the libvir-list mailing list