[CRIU] [PATCH] Do not fail if /tmp does not exist
Andrew Vagin
avagin at odin.com
Mon Apr 6 22:49:57 PDT 2015
On Mon, Apr 06, 2015 at 09:22:19AM -0700, Saied Kazemi wrote:
> Currently if /tmp does not exist, CRIU fails because it will not be
> able to create a temporary directory there. But when checkpointing
> and restoring containers, we cannot rely on the existence of /tmp.
> For such containers, we should use root (/). The temporary directory
> will be removed after CRIU is done.
>
Acked-by: Andrew Vagin <avagin at odin.com>
> Signed-off-by: Saied Kazemi <saied at google.com>
> ---
> mount.c | 9 +++++++--
> 1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/mount.c b/mount.c
> index 079430a..63225f6 100644
> --- a/mount.c
> +++ b/mount.c
> @@ -774,7 +774,9 @@ int open_mount(unsigned int s_dev)
> static int open_mountpoint(struct mount_info *pm)
> {
> int fd = -1, ns_old = -1;
> - char mnt_path[] = "/tmp/cr-tmpfs.XXXXXX";
> + char mnt_path_tmp[] = "/tmp/cr-tmpfs.XXXXXX";
> + char mnt_path_root[] = "/cr-tmpfs.XXXXXX";
> + char *mnt_path = mnt_path_tmp;
> int cwd_fd;
>
> /*
> @@ -803,7 +805,10 @@ static int open_mountpoint(struct mount_info *pm)
> if (switch_ns(root_item->pid.real, &mnt_ns_desc, &ns_old) < 0)
> goto out;
>
> - if (mkdtemp(mnt_path) == NULL) {
> + mnt_path = mkdtemp(mnt_path_tmp);
> + if (mnt_path == NULL && errno == ENOENT)
> + mnt_path = mkdtemp(mnt_path_root);
> + if (mnt_path == NULL) {
> pr_perror("Can't create a temporary directory");
> goto out;
> }
> --
> 2.2.0.rc0.207.ga3a616c
>
More information about the CRIU
mailing list