On 04/03/2014 08:43 AM, Olivia Yin wrote:
Save/restore the state of domain and migrate need read state XML
file.
8192B is not the exactly maximum file length of state file.
restore command could work successfully in virsh shell.
virsh # list --all
Id Name State
----------------------------------------------------
9 sdk running
virsh # save sdk pp
Domain sdk saved to pp
virsh # list --all
Id Name State
----------------------------------------------------
- sdk shut off
virsh # restore pp
Domain restored from pp
virsh # list --all
Id Name State
----------------------------------------------------
10 sdk running
But it will fail with 'virsh restore' command because the state file is
oversized.
~# virsh restore pp
error: Failed to read file 'pp': Value too large for defined data type
There is no xml file supplied here, just the save file...
Signed-off-by: Olivia Yin <Hong-Hua.Yin(a)freescale.com>
---
tools/virsh-domain.c | 6 +++---
tools/virsh.h | 1 +
2 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
index 73414f8..8ade296 100644
--- a/tools/virsh-domain.c
+++ b/tools/virsh-domain.c
@@ -3547,7 +3547,7 @@ doSave(void *opaque)
goto out;
if (xmlfile &&
- virFileReadAll(xmlfile, 8192, &xml) < 0) {
+ virFileReadAll(xmlfile, STATE_XMLFILE_LEN, &xml) < 0) {
vshReportError(ctl);
goto out;
}
@@ -3840,7 +3840,7 @@ cmdSaveImageDefine(vshControl *ctl, const vshCmd *cmd)
if (vshCommandOptStringReq(ctl, cmd, "xml", &xmlfile) < 0)
return false;
- if (virFileReadAll(xmlfile, 8192, &xml) < 0)
+ if (virFileReadAll(xmlfile, STATE_XMLFILE_LEN, &xml) < 0)
goto cleanup;
if (virDomainSaveImageDefineXML(ctl->conn, file, xml, flags) < 0) {
@@ -4424,7 +4424,7 @@ cmdRestore(vshControl *ctl, const vshCmd *cmd)
return false;
if (xmlfile &&
- virFileReadAll(xmlfile, 8192, &xml) < 0)
+ virFileReadAll(xmlfile, STATE_XMLFILE_LEN, &xml) < 0)
... but this changes the limit for the XML file of the updated domain, so it
shouldn't be executed by the above command. Does this actually fix the issue?
Also, VSH_MAX_XML_FILE can be used for all of these.
Jan