[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