Commit 0e1cce76 authored by Pavel Emelyanov's avatar Pavel Emelyanov

pie: Split parasite_daemon into pieces

Signed-off-by: 's avatarPavel Emelyanov <xemul@virtuozzo.com>
parent 6e4c1d9f
...@@ -685,31 +685,11 @@ static int fini(void) ...@@ -685,31 +685,11 @@ static int fini(void)
return -1; return -1;
} }
static noinline __used int noinline parasite_daemon(void *args) static int parasite_daemon_cmd(int cmd, void *args)
{ {
struct ctl_msg m; int ret;
int ret = -1;
pr_debug("Running daemon thread leader\n");
/* Reply we're alive */
if (__parasite_daemon_reply_ack(PARASITE_CMD_INIT_DAEMON, 0))
goto out;
ret = 0;
while (1) {
if (__parasite_daemon_wait_msg(&m))
break;
if (ret && m.cmd != PARASITE_CMD_FINI) {
pr_err("Command rejected\n");
continue;
}
switch (m.cmd) { switch (cmd) {
case PARASITE_CMD_FINI:
goto out;
case PARASITE_CMD_DUMPPAGES: case PARASITE_CMD_DUMPPAGES:
ret = dump_pages(args); ret = dump_pages(args);
break; break;
...@@ -750,11 +730,41 @@ static noinline __used int noinline parasite_daemon(void *args) ...@@ -750,11 +730,41 @@ static noinline __used int noinline parasite_daemon(void *args)
ret = parasite_dump_cgroup(args); ret = parasite_dump_cgroup(args);
break; break;
default: default:
pr_err("Unknown command in parasite daemon thread leader: %d\n", m.cmd); pr_err("Unknown command in parasite daemon thread leader: %d\n", cmd);
ret = -1; ret = -1;
break; break;
} }
return ret;
}
static noinline __used int noinline parasite_daemon(void *args)
{
struct ctl_msg m;
int ret = -1;
pr_debug("Running daemon thread leader\n");
/* Reply we're alive */
if (__parasite_daemon_reply_ack(PARASITE_CMD_INIT_DAEMON, 0))
goto out;
ret = 0;
while (1) {
if (__parasite_daemon_wait_msg(&m))
break;
if (ret && m.cmd != PARASITE_CMD_FINI) {
pr_err("Command rejected\n");
continue;
}
if (m.cmd == PARASITE_CMD_FINI)
goto out;
ret = parasite_daemon_cmd(m.cmd, args);
if (__parasite_daemon_reply_ack(m.cmd, ret)) if (__parasite_daemon_reply_ack(m.cmd, ret))
break; break;
......
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