diff --git a/src/conf/storage_conf.c b/src/conf/storage_conf.c
index 1df3750f36..2a424a71b9 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, "<poolstate>\n");
+    virBufferAdjustIndent(&buf, 2);
+
+    if (virStoragePoolDefFormatBuf(&buf, def) < 0)
+        goto error;
+
+    virBufferAdjustIndent(&buf, -2);
+    virBufferAddLit(&buf, "</poolstate>\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 4584075ce6..edcdaed922 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 36797c55b5..9f82926747 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -824,6 +824,7 @@ virStoragePoolObjRemove;
 virStoragePoolObjSaveDef;
 virStoragePoolObjUnlock;
 virStoragePoolSaveConfig;
+virStoragePoolSaveState;
 virStoragePoolSourceAdapterTypeFromString;
 virStoragePoolSourceAdapterTypeToString;
 virStoragePoolSourceClear;