fixup! lsns: interpolate missing namespaces for converting forests to a tree
This commit is contained in:
parent
de72df79d7
commit
09710a2212
|
@ -755,7 +755,7 @@ static struct lsns_namespace *add_namespace_for_nsfd(struct lsns *ls, int fd, in
|
||||||
return ns;
|
return ns;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void interpolate_missing_namespaces (struct lsns *ls, struct lsns_namespace *orphan, int rela)
|
static void interpolate_missing_namespaces(struct lsns *ls, struct lsns_namespace *orphan, int rela)
|
||||||
{
|
{
|
||||||
const int cmd[MAX_RELA] = {
|
const int cmd[MAX_RELA] = {
|
||||||
[RELA_PARENT] = NS_GET_PARENT,
|
[RELA_PARENT] = NS_GET_PARENT,
|
||||||
|
@ -769,24 +769,24 @@ static void interpolate_missing_namespaces (struct lsns *ls, struct lsns_namespa
|
||||||
if (orphan->related_ns[rela])
|
if (orphan->related_ns[rela])
|
||||||
return;
|
return;
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "/proc/%d/ns/%s", orphan->proc->pid, ns_names [orphan->type]);
|
snprintf(buf, sizeof(buf), "/proc/%d/ns/%s", orphan->proc->pid, ns_names[orphan->type]);
|
||||||
fd_orphan = open(buf, O_RDONLY);
|
fd_orphan = open(buf, O_RDONLY);
|
||||||
if (fd_orphan < 0)
|
if (fd_orphan < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
fd_missing = ioctl (fd_orphan, cmd[rela]);
|
fd_missing = ioctl(fd_orphan, cmd[rela]);
|
||||||
close (fd_orphan);
|
close(fd_orphan);
|
||||||
if (fd_missing < 0)
|
if (fd_missing < 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (fstat(fd_missing, &st) < 0
|
if (fstat(fd_missing, &st) < 0
|
||||||
|| st.st_ino != orphan->related_id[rela]) {
|
|| st.st_ino != orphan->related_id[rela]) {
|
||||||
close (fd_missing);
|
close(fd_missing);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
orphan->related_ns[rela] = add_namespace_for_nsfd(ls, fd_missing, orphan->related_id[rela]);
|
orphan->related_ns[rela] = add_namespace_for_nsfd(ls, fd_missing, orphan->related_id[rela]);
|
||||||
close (fd_missing);
|
close(fd_missing);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int read_namespaces(struct lsns *ls)
|
static int read_namespaces(struct lsns *ls)
|
||||||
|
@ -861,7 +861,7 @@ static int read_namespaces(struct lsns *ls)
|
||||||
struct lsns_namespace *current = orphan[rela];
|
struct lsns_namespace *current = orphan[rela];
|
||||||
orphan[rela] = orphan[rela]->related_ns[rela];
|
orphan[rela] = orphan[rela]->related_ns[rela];
|
||||||
current->related_ns[rela] = NULL;
|
current->related_ns[rela] = NULL;
|
||||||
interpolate_missing_namespaces (ls, current, rela);
|
interpolate_missing_namespaces(ls, current, rela);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue