Commit 02f7c5c6 authored by Pavel Emelyanov's avatar Pavel Emelyanov

mnt: Helper for getting mntns root path

Acked-by: 's avatarAndrew Vagin <avagin@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 169dada8
...@@ -1395,6 +1395,15 @@ static void free_mntinfo(struct mount_info *pms) ...@@ -1395,6 +1395,15 @@ static void free_mntinfo(struct mount_info *pms)
*/ */
static char *mnt_roots; static char *mnt_roots;
/*
* Helper for getting a path to where the namespace's root
* is re-constructed.
*/
static inline int print_ns_root(struct ns_id *ns, char *buf, int bs)
{
return snprintf(buf, bs, "%s/%d/", mnt_roots, ns->id);
}
static int create_mnt_roots(void) static int create_mnt_roots(void)
{ {
if (mnt_roots) if (mnt_roots)
...@@ -1491,8 +1500,7 @@ static int collect_mnt_from_image(struct mount_info **pms, struct ns_id *nsid) ...@@ -1491,8 +1500,7 @@ static int collect_mnt_from_image(struct mount_info **pms, struct ns_id *nsid)
goto err; goto err;
if (nsid->id != root_item->ids->mnt_ns_id) if (nsid->id != root_item->ids->mnt_ns_id)
root_len = snprintf(root, sizeof(root), "%s/%d/", root_len = print_ns_root(nsid, root, sizeof(root));
mnt_roots, nsid->id);
len = strlen(me->mountpoint) + root_len + 1; len = strlen(me->mountpoint) + root_len + 1;
pm->mountpoint = xmalloc(len); pm->mountpoint = xmalloc(len);
if (!pm->mountpoint) if (!pm->mountpoint)
...@@ -1573,9 +1581,7 @@ char *rst_get_mnt_root(int mnt_id) ...@@ -1573,9 +1581,7 @@ char *rst_get_mnt_root(int mnt_id)
if (m->nsid->pid == getpid()) if (m->nsid->pid == getpid())
return path; return path;
snprintf(path, sizeof(path), "%s/%d/", print_ns_root(m->nsid, path, sizeof(path));
mnt_roots, m->nsid->id);
return path; return path;
} }
...@@ -1606,8 +1612,7 @@ int restore_task_mnt_ns(struct ns_id *nsid, pid_t pid) ...@@ -1606,8 +1612,7 @@ int restore_task_mnt_ns(struct ns_id *nsid, pid_t pid)
return -1; return -1;
} }
snprintf(path, sizeof(path), "%s/%d/", mnt_roots, nsid->id); print_ns_root(nsid, path, sizeof(path));
if (cr_pivot_root(path)) if (cr_pivot_root(path))
return -1; return -1;
...@@ -1641,9 +1646,7 @@ static int prepare_roots_yard(void) ...@@ -1641,9 +1646,7 @@ static int prepare_roots_yard(void)
continue; continue;
} }
snprintf(path, sizeof(path), "%s/%d", print_ns_root(nsid, path, sizeof(path));
mnt_roots, nsid->id);
if (mkdir(path, 0600)) { if (mkdir(path, 0600)) {
pr_perror("Unable to create %s", path); pr_perror("Unable to create %s", path);
return -1; return -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment