aboutsummaryrefslogtreecommitdiffstats
path: root/tools/python/xen/xend/XendCheckpoint.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/python/xen/xend/XendCheckpoint.py')
-rw-r--r--tools/python/xen/xend/XendCheckpoint.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/tools/python/xen/xend/XendCheckpoint.py b/tools/python/xen/xend/XendCheckpoint.py
index 8d80bbc45b..63d5821a00 100644
--- a/tools/python/xen/xend/XendCheckpoint.py
+++ b/tools/python/xen/xend/XendCheckpoint.py
@@ -40,11 +40,19 @@ def write_exact(fd, buf, errmsg):
raise XendError(errmsg)
def read_exact(fd, size, errmsg):
- buf = os.read(fd, size)
- if len(buf) != size:
- raise XendError(errmsg)
+ buf = ''
+ while size != 0:
+ str = os.read(fd, size)
+ if not len(str):
+ log.error("read_exact: EOF trying to read %d (buf='%s')" % \
+ (size, buf))
+ raise XendError(errmsg)
+ size = size - len(str)
+ buf = buf + str
return buf
+
+
def save(fd, dominfo, live):
write_exact(fd, SIGNATURE, "could not write guest state file: signature")