[Sheepdog] [PATCH] sheep: add support for gateway mode

MORITA Kazutaka morita.kazutaka at gmail.com
Mon May 7 18:14:33 CEST 2012


At Mon, 07 May 2012 13:31:53 +0800,
Liu Yuan wrote:
> 
> On 05/07/2012 03:36 AM, MORITA Kazutaka wrote:
> 
> > The gateway nodes only forwards requests to the sheepdog cluster, and
> > doesn't store objects in local at all.  Running a gateway daemon on
> > localhost and connecting to it would be an alternative to implementing
> > sheepdog fail-over support in qemu because the gateway node
> > automatically choose the correct target nodes.
> > 
> > Currently, this options is just an alias for '--vnodes 0'.  Note that
> > a small storage to store epoch information is still required for
> > gateway nodes.
> > 
> > Signed-off-by: MORITA Kazutaka <morita.kazutaka at gmail.com>
> > ---
> >  sheep/sheep.c |    8 +++++++-
> >  1 files changed, 7 insertions(+), 1 deletions(-)
> > 
> > diff --git a/sheep/sheep.c b/sheep/sheep.c
> > index 6645e8d..4e6e266 100644
> > --- a/sheep/sheep.c
> > +++ b/sheep/sheep.c
> > @@ -40,6 +40,7 @@ static struct option const long_options[] = {
> >  	{"directio", no_argument, NULL, 'D'},
> >  	{"foreground", no_argument, NULL, 'f'},
> >  	{"nr_gateway_worker", required_argument, NULL, 'g'},
> > +	{"gateway", no_argument, NULL, 'G'},
> >  	{"help", no_argument, NULL, 'h'},
> >  	{"nr_io_worker", required_argument, NULL, 'i'},
> >  	{"loglevel", required_argument, NULL, 'l'},
> > @@ -50,7 +51,7 @@ static struct option const long_options[] = {
> >  	{NULL, 0, NULL, 0},
> >  };
> >  
> > -static const char *short_options = "ac:dDfg:hi:l:op:v:z:";
> > +static const char *short_options = "ac:dDfg:Ghi:l:op:v:z:";
> >  
> >  static void usage(int status)
> >  {
> > @@ -68,6 +69,7 @@ Options:\n\
> >    -D, --directio          use direct IO when accessing the object from object cache\n\
> >    -f, --foreground        make the program run in the foreground\n\
> >    -g, --nr_gateway_worker set the number of workers for Guests' requests (default 4)\n\
> > +  -G, --gateway           make the progam run as a gateway mode (same as '-v 0')\n\
> >    -h, --help              display this help and exit\n\
> >    -i, --nr_io_worker      set the number of workers for sheep internal requests (default 4)\n\
> >    -l, --loglevel          specify the level of logging detail\n\
> > @@ -156,6 +158,10 @@ int main(int argc, char **argv)
> >  				exit(1);
> >  			}
> >  			break;
> > +		case 'G':
> > +			/* same as '-v 0' */
> > +			nr_vnodes = 0;
> > +			break;
> >  		case 'i':
> >  			nr_io_worker = strtol(optarg, &p, 10);
> >  			if (optarg == p || nr_io_worker < 4 || nr_io_worker > UINT32_MAX) {
> 
> 
> What if a user both set -G and -v? Do we need to handle this corner
> erroneous case?

'-G -v ...' is completely same as '-v 0 -v ...'.  We don't check such
situations (e.g. a user sets '-f -f', '-p 7001 -p 7002', or similar),
so let's leave this case untouched too.

Thanks,

Kazutaka



More information about the sheepdog mailing list