[CRIU] [PATCH]v2 crtools: write pidfile, when service/page server is run as daemon and "--pidfile" is set
Cyrill Gorcunov
gorcunov at gmail.com
Sun Sep 15 17:56:56 EDT 2013
On Mon, Sep 16, 2013 at 01:39:09AM +0400, Ruslan Kuprieiev wrote:
> On 09/16/2013 01:12 AM, Cyrill Gorcunov wrote:
> >On Mon, Sep 16, 2013 at 12:58:49AM +0400, Ruslan Kuprieiev wrote:
> >>@@ -971,8 +956,11 @@ static inline int fork_with_pid(struct pstree_item *item)
> >> if (ca.clone_flags & CLONE_NEWPID)
> >> item->pid.real = ret;
> >>- if (opts.pidfile && root_item == item)
> >>- write_pidfile(opts.pidfile, ret);
> >>+ if (opts.pidfile && root_item == item) {
> >>+ ret = write_pidfile(opts.pidfile, ret);
> >>+ if (ret < 0)
> >>+ pr_perror("Can't write pidfile");
> >>+ }
> >I must admit I have no clue what you're guys doing so it
> >might be by purpose, but don't you need to exit with error
> >here if write_pidfile failed or it's safe?
>
> I've done like it is in previous "if". Monkey see, monkey do=). Also
> there are "err_unlock" and "err" labels, that are right below.
Ah, this comes from commit
commit 827c633b26197fd464551f0d5b22bfcc3653136f
Author: Pavel Emelyanov <xemul at parallels.com>
Date: Tue Nov 27 21:59:58 2012 +0300
rst: Write pidfile in separate fn
Just for better readability.
Signed-off-by: Pavel Emelyanov <xemul at parallels.com>
and write_pidfile is
static void write_pidfile(char *pfname, int pid)
{
int fd;
fd = open(pfname, O_WRONLY | O_TRUNC | O_CREAT, 0600);
if (fd == -1) {
pr_perror("Can't open %s", pfname);
kill(pid, SIGKILL);
return;
}
dprintf(fd, "%d", pid);
close(fd);
}
Pavel, why kill() here, don't you need to pass exeution to err_unlock:
and such?
More information about the CRIU
mailing list