diff options
Diffstat (limited to 'tools/python/xen/xend/XendCheckpoint.py')
-rw-r--r-- | tools/python/xen/xend/XendCheckpoint.py | 14 |
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") |