mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-27 20:37:57 +00:00
Signed-off-by: Radostin Stoyanov <rstoyanov1@gmail.com> Signed-off-by: Andrei Vagin <avagin@virtuozzo.com>
36 lines
780 B
Python
Executable File
36 lines
780 B
Python
Executable File
import os, tempfile
|
|
|
|
id_str = ""
|
|
|
|
def create_fds():
|
|
tdir = tempfile.mkdtemp("zdtm.inhfd.XXXXXX")
|
|
if os.system("mount -t tmpfs zdtm.inhfd %s" % tdir) != 0:
|
|
raise Exception("Unable to mount tmpfs")
|
|
tfifo = os.path.join(tdir, "test_fifo")
|
|
os.mkfifo(tfifo)
|
|
fd2 = open(tfifo, "w+b", buffering=0)
|
|
fd1 = open(tfifo, "rb")
|
|
os.system("umount -l %s" % tdir)
|
|
os.rmdir(tdir)
|
|
|
|
mnt_id = -1;
|
|
with open("/proc/self/fdinfo/%d" % fd1.fileno()) as f:
|
|
for l in f:
|
|
l = l.split()
|
|
if l[0] == "mnt_id:":
|
|
mnt_id = int(l[1])
|
|
break
|
|
else:
|
|
raise Exception("Unable to find mnt_id")
|
|
|
|
global id_str
|
|
id_str = "file[%x:%x]" % (mnt_id, os.fstat(fd1.fileno()).st_ino)
|
|
|
|
return (fd2, fd1)
|
|
|
|
def filename(pipef):
|
|
return id_str
|
|
|
|
def dump_opts(sockf):
|
|
return [ "--external", id_str ]
|