[sheepdog] [PATCH] sheep: let sheep return correct exit status when locking a base directory fails
Hitoshi Mitake
mitake.hitoshi at gmail.com
Thu May 9 03:33:34 CEST 2013
At Thu, 09 May 2013 10:14:38 +0900,
Hitoshi Mitake wrote:
>
> At Thu, 09 May 2013 01:18:44 +0900,
> MORITA Kazutaka wrote:
> >
> > At Tue, 7 May 2013 01:15:41 +0900,
> > Hitoshi Mitake wrote:
> > >
> > > Currently, lock_and_daemon() always returns 0 as its exit
> > > status. But this behavior is confusing because users cannot detect
> > > errors during locking a base directory via the exit status. This patch
> > > modifies lock_and_daemon() for returning correct exit status.
> > >
> > > Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> > > ---
> > > sheep/sheep.c | 49 +++++++++++++++++++++++++++++++++++++------------
> > > 1 files changed, 37 insertions(+), 12 deletions(-)
> > >
> > > diff --git a/sheep/sheep.c b/sheep/sheep.c
> > > index a7e3820..64f04ca 100644
> > > --- a/sheep/sheep.c
> > > +++ b/sheep/sheep.c
> > > @@ -392,7 +392,12 @@ static void check_host_env(void)
> > >
> > > static int lock_and_daemon(bool daemonize, const char *base_dir)
> > > {
> > > - int ret, devnull_fd = 0;
> > > + int ret, devnull_fd = 0, status = 0;
> > > + int pipefd[2];
> > > +
> > > + ret = pipe(pipefd);
> > > + if (ret < 0)
> > > + panic("pipe() for passing exit status failed: %m");
> >
> > Can we use eventfd instead of pipe?
>
> OK, eventfd is more simple. I agree with using it.
> I'll send v2 later.
I tried it but it seems that eventfd is not suitable for this
case. Because eventfds are used for representing couters, so writing
0 via eventfd_wrtie() doesn't cause return of eventfd_read().
In this case, pipe(2) is simpler than eventfd. I believe the current
patch is optimal.
Thanks,
Hitoshi
More information about the sheepdog
mailing list