diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c index 1df3750f36aae1f612a93f8ade5efa251aaa0264..2a424a71b9f33b1e33b52a693075084454b1e4f9 100644 --- a/src/conf/storage_conf.c +++ b/src/conf/storage_conf.c @@ -1927,6 +1927,40 @@ static int virStoragePoolSaveXML(const char *path, } +int +virStoragePoolSaveState(const char *stateFile, + virStoragePoolDefPtr def) +{ + virBuffer buf = VIR_BUFFER_INITIALIZER; + int ret = -1; + char *xml; + + virBufferAddLit(&buf, "\n"); + virBufferAdjustIndent(&buf, 2); + + if (virStoragePoolDefFormatBuf(&buf, def) < 0) + goto error; + + virBufferAdjustIndent(&buf, -2); + virBufferAddLit(&buf, "\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 4584075ce6b6f0f3e869f7322923f8f50054250e..edcdaed9224373cbbc6206e08e9c8b8940d8a480 100644 --- a/src/conf/storage_conf.h +++ b/src/conf/storage_conf.h @@ -371,6 +371,8 @@ virStoragePoolObjPtr virStoragePoolObjAssignDef(virStoragePoolObjListPtr pools, virStoragePoolDefPtr def); +int virStoragePoolSaveState(const char *stateFile, + virStoragePoolDefPtr def); int virStoragePoolSaveConfig(const char *configDir, virStoragePoolDefPtr def); int virStoragePoolObjSaveDef(virStorageDriverStatePtr driver, diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 36797c55b5e221dfc6f9897d12431f6452f13f89..9f82926747266aa2933d44befbd334722ab77d8b 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -824,6 +824,7 @@ virStoragePoolObjRemove; virStoragePoolObjSaveDef; virStoragePoolObjUnlock; virStoragePoolSaveConfig; +virStoragePoolSaveState; virStoragePoolSourceAdapterTypeFromString; virStoragePoolSourceAdapterTypeToString; virStoragePoolSourceClear;