[Sheepdog] [PATCH, RFC] collie: use exit codes to distinguish between errors

MORITA Kazutaka morita.kazutaka at lab.ntt.co.jp
Thu Jun 16 18:49:13 CEST 2011


At Thu, 16 Jun 2011 17:01:40 +0100,
Chris Webb wrote:
> 
> > >  		} else if (ret == SD_RES_NO_OBJ) {
> > >  			fprintf(stderr, "no such attribute, %s\n", key);
> > >  		} else
> > >  			fprintf(stderr, "failed to find attr oid, %s\n",
> > >  				sd_strerror(ret));
> > > -		return 1;
> > > +		return EXIT_MISSING;
> > 
> > Should we return EXIT_FAILURE if (ret != SD_RES_NO_OBJ)?
> 
> I picked EXIT_MISSING because both branches quoted above report an error
> about something not being found to stderr, but I'm happy to replace with
> EXIT_FAILURE for the 'attr oid not found' case if you think that's more
> appropriate? What circumstances can this happen in?

For example, if a disk I/O error happens, we cannot find the object.
I think the above error message is a bit confusing.  If there is no
such an attribute and no error is reported, find_vdi_attr_oid()
returns SD_RES_NO_OBJ, so EXIT_FAILURE is better when ret != SD_RES_NO_OBJ.

Thanks,

Kazutaka



More information about the sheepdog mailing list