[libvirt] [PATCH v4 03/13] parallels: split parallelsStorageOpen function

Daniel Veillard veillard at redhat.com
Tue Dec 11 07:47:35 UTC 2012


On Tue, Dec 04, 2012 at 05:43:03PM +0400, Dmitry Guryanov wrote:
> Move code for loading inforation about pools to a separate
> function - parallelsLoadPools.
> 
> Signed-off-by: Dmitry Guryanov <dguryanov at parallels.com>
> ---
>  src/parallels/parallels_storage.c |   66 ++++++++++++++++++++++---------------
>  1 files changed, 39 insertions(+), 27 deletions(-)
> 
> diff --git a/src/parallels/parallels_storage.c b/src/parallels/parallels_storage.c
> index 9075dfd..e602299 100644
> --- a/src/parallels/parallels_storage.c
> +++ b/src/parallels/parallels_storage.c
> @@ -114,33 +114,14 @@ cleanup:
>  
>  }
>  
> -static virDrvOpenStatus
> -parallelsStorageOpen(virConnectPtr conn,
> -                     virConnectAuthPtr auth ATTRIBUTE_UNUSED,
> -                     unsigned int flags)
> +static int parallelsLoadPools(virConnectPtr conn)
>  {
> -    char *base = NULL;
> -    virStorageDriverStatePtr storageState;
> -    bool privileged = (geteuid() == 0);
>      parallelsConnPtr privconn = conn->privateData;
> +    virStorageDriverStatePtr storageState = conn->storagePrivateData;
> +    bool privileged = (geteuid() == 0);
> +    char *base = NULL;
>      size_t i;
>  
> -    virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
> -
> -    if (STRNEQ(conn->driver->name, "Parallels"))
> -        return VIR_DRV_OPEN_DECLINED;
> -
> -    if (VIR_ALLOC(storageState) < 0) {
> -        virReportOOMError();
> -        return VIR_DRV_OPEN_ERROR;
> -    }
> -
> -    if (virMutexInit(&storageState->lock) < 0) {
> -        VIR_FREE(storageState);
> -        return VIR_DRV_OPEN_ERROR;
> -    }
> -    parallelsStorageLock(storageState);
> -
>      if (privileged) {
>          if ((base = strdup(SYSCONFDIR "/libvirt")) == NULL)
>              goto out_of_memory;
> @@ -194,16 +175,47 @@ parallelsStorageOpen(virConnectPtr conn,
>          virStoragePoolObjUnlock(privconn->pools.objs[i]);
>      }
>  
> -    parallelsStorageUnlock(storageState);
> +    return 0;
> +
> +out_of_memory:
> +    virReportOOMError();
> +error:
> +    VIR_FREE(base);
> +    return -1;
> +}
> +
> +static virDrvOpenStatus
> +parallelsStorageOpen(virConnectPtr conn,
> +                     virConnectAuthPtr auth ATTRIBUTE_UNUSED,
> +                     unsigned int flags)
> +{
> +    virStorageDriverStatePtr storageState;
> +    virCheckFlags(VIR_CONNECT_RO, VIR_DRV_OPEN_ERROR);
> +
> +    if (STRNEQ(conn->driver->name, "Parallels"))
> +        return VIR_DRV_OPEN_DECLINED;
> +
> +    if (VIR_ALLOC(storageState) < 0) {
> +        virReportOOMError();
> +        return VIR_DRV_OPEN_ERROR;
> +    }
> +
> +    if (virMutexInit(&storageState->lock) < 0) {
> +        VIR_FREE(storageState);
> +        return VIR_DRV_OPEN_ERROR;
> +    }
>  
>      conn->storagePrivateData = storageState;
> +    parallelsStorageLock(storageState);
> +
> +    if (parallelsLoadPools(conn))
> +        goto error;
> +
> +    parallelsStorageUnlock(storageState);
>  
>      return VIR_DRV_OPEN_SUCCESS;
>  
> -out_of_memory:
> -    virReportOOMError();
>  error:
> -    VIR_FREE(base);
>      parallelsStorageUnlock(storageState);
>      parallelsStorageClose(conn);
>      return -1;

  Okay, ACK,

Daniel

-- 
Daniel Veillard      | Open Source and Standards, Red Hat
veillard at redhat.com  | libxml Gnome XML XSLT toolkit  http://xmlsoft.org/
http://veillard.com/ | virtualization library  http://libvirt.org/




More information about the libvir-list mailing list