Add AutoDedup option to CriuOpts

Memory image deduplication, very useful for incremental dumps.

See: https://criu.org/Memory_images_deduplication

Signed-off-by: Nikolas Sepos <nikolas.sepos@gmail.com>
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
 }