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 |