From 5efcb6028db561103e8be0ce5decfe024979e231 Mon Sep 17 00:00:00 2001 From: Jacob Wen Date: Mon, 20 Nov 2017 16:03:43 +0800 Subject: [PATCH] phaul: use relative path for parent link Absolute paths for parent links may not work on restore. e.g: restore on a different server(during migration). See https://github.com/checkpoint-restore/criu/blob/criu-2.x-stable/criu/image.c#L432 Signed-off-by: Jacob Wen Signed-off-by: Andrei Vagin --- phaul/src/phaul/server.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/phaul/src/phaul/server.go b/phaul/src/phaul/server.go index 0994fb982..7449e634b 100644 --- a/phaul/src/phaul/server.go +++ b/phaul/src/phaul/server.go @@ -7,6 +7,7 @@ import ( "github.com/golang/protobuf/proto" "github.com/checkpoint-restore/criu/lib/go/src/criu" "github.com/checkpoint-restore/criu/lib/go/src/rpc" + "path/filepath" ) type PhaulServer struct { @@ -54,7 +55,15 @@ func (s *PhaulServer) StartIter() error { opts.ImagesDirFd = proto.Int32(int32(img_dir.Fd())) if prev_p != "" { - opts.ParentImg = proto.String(prev_p) + p, err := filepath.Abs(img_dir.Name()) + if err != nil { + return err + } + rel, err := filepath.Rel(p, prev_p) + if err != nil { + return err + } + opts.ParentImg = proto.String(rel) } pid, _, err := s.cr.StartPageServerChld(opts)