Merge pull request #1561 from nseps/master

Add AutoDedup option to CriuOpts
diff --git a/checkpoint.go b/checkpoint.go
index 788f334..d62816b 100644
--- a/checkpoint.go
+++ b/checkpoint.go
@@ -35,6 +35,7 @@
 		cli.BoolFlag{Name: "pre-dump", Usage: "dump container's memory information only, leave the container running after this"},
 		cli.StringFlag{Name: "manage-cgroups-mode", Value: "", Usage: "cgroups mode: 'soft' (default), 'full' and 'strict'"},
 		cli.StringSliceFlag{Name: "empty-ns", Usage: "create a namespace, but don't restore its properties"},
+		cli.BoolFlag{Name: "auto-dedup", Usage: "enable auto deduplication of memory images"},
 	},
 	Action: func(context *cli.Context) error {
 		if err := checkArgs(context, 1, exactArgs); err != nil {
diff --git a/libcontainer/container_linux.go b/libcontainer/container_linux.go
index cbdfe0d..186faab 100644
--- a/libcontainer/container_linux.go
+++ b/libcontainer/container_linux.go
@@ -811,6 +811,7 @@
 		FileLocks:       proto.Bool(criuOpts.FileLocks),
 		EmptyNs:         proto.Uint32(criuOpts.EmptyNs),
 		OrphanPtsMaster: proto.Bool(true),
+		AutoDedup:       proto.Bool(criuOpts.AutoDedup),
 	}
 
 	fcg := c.cgroupManager.GetPaths()["freezer"]
@@ -1012,6 +1013,7 @@
 			FileLocks:       proto.Bool(criuOpts.FileLocks),
 			EmptyNs:         proto.Uint32(criuOpts.EmptyNs),
 			OrphanPtsMaster: proto.Bool(true),
+			AutoDedup:       proto.Bool(criuOpts.AutoDedup),
 		},
 	}
 
diff --git a/libcontainer/criu_opts_linux.go b/libcontainer/criu_opts_linux.go
index 9423d24..8f142c9 100644
--- a/libcontainer/criu_opts_linux.go
+++ b/libcontainer/criu_opts_linux.go
@@ -34,4 +34,5 @@
 	VethPairs               []VethPairName     // pass the veth to criu when restore
 	ManageCgroupsMode       cgMode             // dump or restore cgroup mode
 	EmptyNs                 uint32             // don't c/r properties for namespace from this mask
+	AutoDedup               bool               // auto deduplication for incremental dumps
 }
diff --git a/restore.go b/restore.go
index ca9e1e8..7342f9d 100644
--- a/restore.go
+++ b/restore.go
@@ -82,6 +82,10 @@
 			Name:  "empty-ns",
 			Usage: "create a namespace, but don't restore its properties",
 		},
+		cli.BoolFlag{
+			Name:  "auto-dedup",
+			Usage: "enable auto deduplication of memory images",
+		},
 	},
 	Action: func(context *cli.Context) error {
 		if err := checkArgs(context, 1, exactArgs); err != nil {
@@ -123,5 +127,6 @@
 		ShellJob:                context.Bool("shell-job"),
 		FileLocks:               context.Bool("file-locks"),
 		PreDump:                 context.Bool("pre-dump"),
+		AutoDedup:               context.Bool("auto-dedup"),
 	}
 }