mirror of
https://github.com/checkpoint-restore/criu
synced 2025-09-01 14:55:39 +00:00
crit: Fix ipc load/dump for io.BytesIO input/output
There are loads and dumps method in pycriu.images that work with strings, instead of open()-ed files. For simplicity strings are turned into streams with io.BytesIO and the files are then pushed into regular load/dump methods. The problem is that array.array object doesn't work with io object in .fromfile/.tofile methods, so we have to read/write the data from them explicitly and use .fromstring/.tostring for arrays. With this the crit test finally passes :D Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
This commit is contained in:
@@ -269,7 +269,7 @@ class ipc_sem_set_handler:
|
|||||||
s = array.array('H')
|
s = array.array('H')
|
||||||
if s.itemsize != sizeof_u16:
|
if s.itemsize != sizeof_u16:
|
||||||
raise Exception("Array size mismatch")
|
raise Exception("Array size mismatch")
|
||||||
s.fromfile(f, entry['nsems'])
|
s.fromstring(f.read(size))
|
||||||
f.seek(rounded - size, 1)
|
f.seek(rounded - size, 1)
|
||||||
return s.tolist()
|
return s.tolist()
|
||||||
|
|
||||||
@@ -283,7 +283,7 @@ class ipc_sem_set_handler:
|
|||||||
s.fromlist(extra)
|
s.fromlist(extra)
|
||||||
if len(s) != entry['nsems']:
|
if len(s) != entry['nsems']:
|
||||||
raise Exception("Number of semaphores mismatch")
|
raise Exception("Number of semaphores mismatch")
|
||||||
s.tofile(f)
|
f.write(s.tostring())
|
||||||
f.write('\0' * (rounded - size))
|
f.write('\0' * (rounded - size))
|
||||||
|
|
||||||
class ipc_msg_queue_handler:
|
class ipc_msg_queue_handler:
|
||||||
|
Reference in New Issue
Block a user