Commit f2978d2a authored by Pavel Emelyanov's avatar Pavel Emelyanov

parasite: Reshuffle sync and async daemon-node executing routines

The version, that might not wait for ack is always called with
"async" flag set. Cleanup things according to this.
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent 0dc835ac
......@@ -62,10 +62,15 @@ extern int parasite_dump_posix_timers_seized(struct proc_posix_timers_stat *proc
})
extern void *parasite_args_s(struct parasite_ctl *ctl, int args_size);
extern int parasite_execute_daemon(unsigned int cmd, struct parasite_ctl *ctl);
extern int parasite_send_fd(struct parasite_ctl *ctl, int fd);
extern int __parasite_execute_daemon(unsigned int cmd,
struct parasite_ctl *ctl, bool wait_ack);
/*
* Execute a command in parasite when it's in daemon mode.
* The __-ed version is asyncronous (doesn't wait for ack).
*/
extern int parasite_execute_daemon(unsigned int cmd, struct parasite_ctl *ctl);
extern int __parasite_execute_daemon(unsigned int cmd, struct parasite_ctl *ctl);
extern int __parasite_execute_daemon_wait_ack(unsigned int cmd,
struct parasite_ctl *ctl);
......
......@@ -370,7 +370,7 @@ static int __parasite_dump_pages_seized(struct parasite_ctl *ctl,
pr_debug("PPB: %d pages %d segs %u pipe %d off\n",
args->nr_pages, args->nr_segs, ppb->pipe_size, args->off);
ret = __parasite_execute_daemon(PARASITE_CMD_DUMPPAGES, ctl, false);
ret = __parasite_execute_daemon(PARASITE_CMD_DUMPPAGES, ctl);
if (ret < 0)
goto out_pp;
ret = parasite_send_fd(ctl, ppb->p[1]);
......
......@@ -288,25 +288,23 @@ int __parasite_execute_daemon_wait_ack(unsigned int cmd,
return 0;
}
int __parasite_execute_daemon(unsigned int cmd,
struct parasite_ctl *ctl, bool wait_ack)
int __parasite_execute_daemon(unsigned int cmd, struct parasite_ctl *ctl)
{
struct ctl_msg m;
m = ctl_msg_cmd(cmd);
if (__parasite_send_cmd(ctl->tsock, &m))
return -1;
if (wait_ack)
return __parasite_execute_daemon_wait_ack(cmd, ctl);
return 0;
return __parasite_send_cmd(ctl->tsock, &m);
}
int parasite_execute_daemon(unsigned int cmd,
struct parasite_ctl *ctl)
int parasite_execute_daemon(unsigned int cmd, struct parasite_ctl *ctl)
{
return __parasite_execute_daemon(cmd, ctl, true);
int ret;
ret = __parasite_execute_daemon(cmd, ctl);
if (!ret)
ret = __parasite_execute_daemon_wait_ack(cmd, ctl);
return ret;
}
static int munmap_seized(struct parasite_ctl *ctl, void *addr, size_t length)
......@@ -668,7 +666,7 @@ int parasite_drain_fds_seized(struct parasite_ctl *ctl,
args = parasite_args_s(ctl, size);
memcpy(args, dfds, size);
ret = __parasite_execute_daemon(PARASITE_CMD_DRAIN_FDS, ctl, false);
ret = __parasite_execute_daemon(PARASITE_CMD_DRAIN_FDS, ctl);
if (ret) {
pr_err("Parasite failed to drain descriptors\n");
goto err;
......@@ -687,7 +685,7 @@ int parasite_get_proc_fd_seized(struct parasite_ctl *ctl)
{
int ret = -1, fd;
ret = __parasite_execute_daemon(PARASITE_CMD_GET_PROC_FD, ctl, false);
ret = __parasite_execute_daemon(PARASITE_CMD_GET_PROC_FD, ctl);
if (ret) {
pr_err("Parasite failed to get proc fd\n");
return ret;
......@@ -756,7 +754,7 @@ static int parasite_fini_seized(struct parasite_ctl *ctl)
return -1;
}
ret = __parasite_execute_daemon(PARASITE_CMD_FINI, ctl, false);
ret = __parasite_execute_daemon(PARASITE_CMD_FINI, ctl);
close_safe(&ctl->tsock);
if (ret)
return -1;
......
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