[CRIU] [PATCH] phaul: use relative path for parent link

Jacob Wen jian.w.wen at oracle.com
Mon Nov 20 11:03:43 MSK 2017


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 <jian.w.wen at oracle.com>
---
 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 0994fb9..7449e63 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)
-- 
2.7.4



More information about the CRIU mailing list