[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