mirror of
https://github.com/checkpoint-restore/criu
synced 2025-08-30 13:58:34 +00:00
mnt: add a sub-id to print_ns_root
It will be used to handle overmounts Signed-off-by: Andrei Vagin <avagin@virtuozzo.com> Signed-off-by: Pavel Emelyanov <xemul@virtuozzo.com>
This commit is contained in:
committed by
Pavel Emelyanov
parent
bad162f0ee
commit
432504d403
12
criu/mount.c
12
criu/mount.c
@@ -2264,9 +2264,9 @@ void mnt_entry_free(struct mount_info *mi)
|
|||||||
* Helper for getting a path to where the namespace's root
|
* Helper for getting a path to where the namespace's root
|
||||||
* is re-constructed.
|
* is re-constructed.
|
||||||
*/
|
*/
|
||||||
static inline int print_ns_root(struct ns_id *ns, char *buf, int bs)
|
static inline int print_ns_root(struct ns_id *ns, int remap_id, char *buf, int bs)
|
||||||
{
|
{
|
||||||
return snprintf(buf, bs, "%s/%d", mnt_roots, ns->id);
|
return snprintf(buf, bs, "%s/%d-%010d", mnt_roots, ns->id, remap_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int create_mnt_roots(void)
|
static int create_mnt_roots(void)
|
||||||
@@ -2403,7 +2403,7 @@ static int collect_mnt_from_image(struct mount_info **pms, struct ns_id *nsid)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (nsid->type == NS_OTHER)
|
if (nsid->type == NS_OTHER)
|
||||||
root_len = print_ns_root(nsid, root, sizeof(root));
|
root_len = print_ns_root(nsid, 0, root, sizeof(root));
|
||||||
|
|
||||||
pr_debug("Reading mountpoint images (id %d pid %d)\n",
|
pr_debug("Reading mountpoint images (id %d pid %d)\n",
|
||||||
nsid->id, (int)nsid->ns_pid);
|
nsid->id, (int)nsid->ns_pid);
|
||||||
@@ -2526,7 +2526,7 @@ int rst_get_mnt_root(int mnt_id, char *path, int plen)
|
|||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (m->nsid->type == NS_OTHER)
|
if (m->nsid->type == NS_OTHER)
|
||||||
return print_ns_root(m->nsid, path, plen);
|
return print_ns_root(m->nsid, 0, path, plen);
|
||||||
|
|
||||||
rroot:
|
rroot:
|
||||||
path[0] = '/';
|
path[0] = '/';
|
||||||
@@ -2646,7 +2646,7 @@ static int populate_roots_yard(void)
|
|||||||
if (nsid->nd != &mnt_ns_desc)
|
if (nsid->nd != &mnt_ns_desc)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
print_ns_root(nsid, path, sizeof(path));
|
print_ns_root(nsid, 0, path, sizeof(path));
|
||||||
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;
|
||||||
@@ -2940,7 +2940,7 @@ int prepare_mnt_ns(void)
|
|||||||
|
|
||||||
/* Set its root */
|
/* Set its root */
|
||||||
path[0] = '/';
|
path[0] = '/';
|
||||||
print_ns_root(nsid, path + 1, sizeof(path) - 1);
|
print_ns_root(nsid, 0, path + 1, sizeof(path) - 1);
|
||||||
if (cr_pivot_root(path))
|
if (cr_pivot_root(path))
|
||||||
goto err;
|
goto err;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user