[libvirt] [PATCH 3/6] conf: Introduce virStoragePoolSaveState

John Ferlan jferlan at redhat.com
Thu Apr 2 14:14:33 UTC 2015



On 04/02/2015 06:10 AM, Erik Skultety wrote:
> Properly format storage pool state XML.

Your previous patch 3/7 had a better commit message:

Introduce virStoragePoolSaveStatus to properly format the status XML in
the same manner as virStoragePoolDefFormat, except for adding a
<poolstatus> ... </poolstatus> around the definition. This is similar to
virNetworkObjFormat used to save the live/active network information.

> 
> Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1177733

By itself - no it doesn't solve the bug (same for 4 and 5)
> ---
>  src/conf/storage_conf.c  | 35 +++++++++++++++++++++++++++++++++++
>  src/conf/storage_conf.h  |  4 +++-
>  src/libvirt_private.syms |  1 +
>  3 files changed, 39 insertions(+), 1 deletion(-)
> 
> diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
> index 73b937e..ee564f2 100644
> --- a/src/conf/storage_conf.c
> +++ b/src/conf/storage_conf.c
> @@ -1928,6 +1928,41 @@ static int virStoragePoolSaveXML(const char *path,
>  
>      return ret;
>  }
> +
> +
> +int virStoragePoolSaveState(const char *stateFile,
> +                            virStoragePoolDefPtr def)

Again it's
int
virStorage...


ACK with those adjustments.

John

FYI: Coverity is happy with all 6 patches...
> +{
> +    virBuffer buf = VIR_BUFFER_INITIALIZER;
> +    int ret = -1;
> +    char *xml;
> +
> +    virBufferAddLit(&buf, "<poolstatus>\n");
> +    virBufferAdjustIndent(&buf, 2);
> +
> +    if (virStoragePoolDefFormatBuf(&buf, def) < 0)
> +        goto error;
> +
> +    virBufferAdjustIndent(&buf, -2);
> +    virBufferAddLit(&buf, "</poolstatus>\n");
> +
> +    if (virBufferCheckError(&buf) < 0)
> +        goto error;
> +
> +    if (!(xml = virBufferContentAndReset(&buf)))
> +        goto error;
> +
> +    if (virStoragePoolSaveXML(stateFile, def, xml))
> +        goto error;
> +
> +    ret = 0;
> +
> + error:
> +    VIR_FREE(xml);
> +    return ret;
> +}
> +
> +
>  int
>  virStoragePoolSaveConfig(const char *configFile,
>                           virStoragePoolDefPtr def)
> diff --git a/src/conf/storage_conf.h b/src/conf/storage_conf.h
> index 4584075..da378b7 100644
> --- a/src/conf/storage_conf.h
> +++ b/src/conf/storage_conf.h
> @@ -371,7 +371,9 @@ virStoragePoolObjPtr
>  virStoragePoolObjAssignDef(virStoragePoolObjListPtr pools,
>                             virStoragePoolDefPtr def);
>  
> -int virStoragePoolSaveConfig(const char *configDir,
> +int virStoragePoolSaveState(const char *stateFile,
> +                            virStoragePoolDefPtr def);
> +int virStoragePoolSaveConfig(const char *configFile,
>                               virStoragePoolDefPtr def);
>  int virStoragePoolObjSaveDef(virStorageDriverStatePtr driver,
>                               virStoragePoolObjPtr pool,
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index 9e71b1a..56acb01 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -813,6 +813,7 @@ virStoragePoolObjRemove;
>  virStoragePoolObjSaveDef;
>  virStoragePoolObjUnlock;
>  virStoragePoolSaveConfig;
> +virStoragePoolSaveState;
>  virStoragePoolSourceAdapterTypeFromString;
>  virStoragePoolSourceAdapterTypeToString;
>  virStoragePoolSourceClear;
> 




More information about the libvir-list mailing list