Commit a18f28d6 authored by Cyrill Gorcunov's avatar Cyrill Gorcunov Committed by Pavel Emelyanov

restore: Set up zombie name on restore

Otherwise we lost 1:1 mapping between names being
dumped and what user sees after restore.

| 1455 pts/0    T      0:00          \_ ./crtools restore -t 1448
| 1448 ?        Ss     0:00          |   \_ ./zombie00 --pidfile=zombie00.pid --outfile=zombie00.out
| 1449 ?        Z      0:00          |       \_ [zombie00] <defunct>
| 1450 ?        Z      0:00          |       \_ [zombie00] <defunct>
| 1451 ?        Z      0:00          |       \_ [zombie00] <defunct>
| 1452 ?        Z      0:00          |       \_ [zombie00] <defunct>

https://bugzilla.openvz.org/show_bug.cgi?id=2635Signed-off-by: 's avatarCyrill Gorcunov <gorcunov@openvz.org>
Acked-by: 's avatarAndrew Vagin <avagin@parallels.com>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent f38fe448
...@@ -1122,6 +1122,7 @@ static int dump_one_zombie(const struct pstree_item *item, ...@@ -1122,6 +1122,7 @@ static int dump_one_zombie(const struct pstree_item *item,
if (!core) if (!core)
return -1; return -1;
strncpy((char *)core->tc->comm, pps->comm, TASK_COMM_LEN);
core->tc->task_state = TASK_DEAD; core->tc->task_state = TASK_DEAD;
core->tc->exit_code = pps->exit_code; core->tc->exit_code = pps->exit_code;
......
...@@ -722,10 +722,14 @@ static int restore_one_fake(void) ...@@ -722,10 +722,14 @@ static int restore_one_fake(void)
return 0; return 0;
} }
static int restore_one_zombie(int pid, int exit_code) static int restore_one_zombie(int pid, CoreEntry *core)
{ {
int exit_code = core->tc->exit_code;
pr_info("Restoring zombie with %d code\n", exit_code); pr_info("Restoring zombie with %d code\n", exit_code);
sys_prctl(PR_SET_NAME, (long)(void *)core->tc->comm, 0, 0, 0);
if (task_entries != NULL) { if (task_entries != NULL) {
restore_finish_stage(CR_STATE_RESTORE); restore_finish_stage(CR_STATE_RESTORE);
zombie_prepare_signals(); zombie_prepare_signals();
...@@ -799,7 +803,7 @@ static int restore_one_task(int pid, CoreEntry *core) ...@@ -799,7 +803,7 @@ static int restore_one_task(int pid, CoreEntry *core)
ret = restore_one_alive_task(pid, core); ret = restore_one_alive_task(pid, core);
break; break;
case TASK_DEAD: case TASK_DEAD:
ret = restore_one_zombie(pid, core->tc->exit_code); ret = restore_one_zombie(pid, core);
break; break;
default: default:
pr_err("Unknown state in code %d\n", (int)core->tc->task_state); pr_err("Unknown state in code %d\n", (int)core->tc->task_state);
......
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