[CRIU] [PATCH] mnt: disable the use of pivot_root in case of ramdisk
Ismaël FEZZAZ
i.fezzaz at gmail.com
Mon Oct 26 15:01:11 PDT 2015
Signed-off-by: Ismael Fezzaz <i.fezzaz at gmail.com>
---
crtools.c | 5 +++++
include/cr_options.h | 1 +
mount.c | 19 +++++++++++++++++++
3 files changed, 25 insertions(+)
diff --git a/crtools.c b/crtools.c
index d3812a1..6d60421 100644
--- a/crtools.c
+++ b/crtools.c
@@ -253,6 +253,7 @@ int main(int argc, char *argv[], char *envp[])
{ "freeze-cgroup", required_argument, 0, 1068 },
{ "ghost-limit", required_argument, 0, 1069 },
{ "irmap-scan-path", required_argument, 0, 1070 },
+ { "ramdisk", no_argument, 0, 1071 },
{ },
};
@@ -498,6 +499,9 @@ int main(int argc, char *argv[], char *envp[])
if (irmap_scan_path_add(optarg))
return -1;
break;
+ case 10701:
+ opts.ramdisk = true;
+ break;
case 'M':
{
char *aux;
@@ -747,6 +751,7 @@ usage:
" --enable-fs FSNAMES a comma separated list of filesystem names
or \"all\".\n"
" force criu to (try to) dump/restore these
filesystem's\n"
" mountpoints even if fs is not supported.\n"
+" --ramdisk disable 'pivot_root'.\n"
"\n"
"* Logging:\n"
" -o|--log-file FILE log file name\n"
diff --git a/include/cr_options.h b/include/cr_options.h
index eac7283..eb89076 100644
--- a/include/cr_options.h
+++ b/include/cr_options.h
@@ -95,6 +95,7 @@ struct cr_options {
bool overlayfs;
size_t ghost_limit;
struct list_head irmap_scan_paths;
+ bool ramdisk;
};
extern struct cr_options opts;
diff --git a/mount.c b/mount.c
index aea9807..b8f1b26 100644
--- a/mount.c
+++ b/mount.c
@@ -2246,6 +2246,25 @@ static int cr_pivot_root(char *root)
}
}
+ if (opts.ramdisk) {
+ if (mount(".", "/", NULL, MS_MOVE, NULL)) {
+ pr_perror("moving . to / failed");
+ return -1;
+ }
+
+ if (chroot(".")) {
+ pr_perror("chroot . failed");
+ return -1;
+ }
+
+ if (chdir("/")) {
+ pr_perror("chdir / failed");
+ return -1;
+ }
+
+ return 0;
+ }
+
if (mkdtemp(put_root) == NULL) {
pr_perror("Can't create a temporary directory");
return -1;
--
1.9.1
More information about the CRIU
mailing list