Commit d249c293 authored by Andrey Vagin's avatar Andrey Vagin Committed by Pavel Emelyanov

restore: create fake process group leaders

Just like for orphaned sessions, create a fake task for orphaned pgids.
Signed-off-by: 's avatarAndrey Vagin <avagin@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 6fb3759c
...@@ -308,6 +308,36 @@ int prepare_pstree_ids(void) ...@@ -308,6 +308,36 @@ int prepare_pstree_ids(void)
/* All other helpers are session leaders for own sessions */ /* All other helpers are session leaders for own sessions */
list_splice(&helpers, &root_item->children); list_splice(&helpers, &root_item->children);
/* Add a process group leader if it is absent */
for_each_pstree_item(item) {
struct pstree_item *gleader;
if (!item->pgid || item->pid.virt == item->pgid)
continue;
for_each_pstree_item(gleader) {
if (gleader->pid.virt == item->pgid)
break;
}
if (gleader)
continue;
helper = alloc_pstree_item();
if (helper == NULL)
return -1;
helper->sid = item->sid;
helper->pgid = item->pgid;
helper->pid.virt = item->pgid;
helper->state = TASK_HELPER;
helper->parent = item;
list_add(&helper->list, &item->children);
task_entries->nr_helpers++;
pr_info("Add a helper %d for restoring PGID %d\n",
helper->pid.virt, helper->pgid);
}
return 0; return 0;
} }
......
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