On 02/29/2012 12:48 AM, MORITA Kazutaka wrote: > With this patch, you can set the weight of each node with the -v > option. > > Example: > > $ ./sheep/sheep /store/0 -p 7000 -z 0 -v 1000 > $ ./sheep/sheep /store/1 -p 7001 -z 1 -v 2000 > $ ./sheep/sheep /store/2 -p 7002 -z 2 -v 3000 > $ ./collie/collie cluster format -c 1 > using backend simple store > $ ./collie/collie node list > M Id Host:Port V-Nodes Zone > - 0 10.68.14.1:7000 1000 0 > - 1 10.68.14.1:7001 2000 1 > - 2 10.68.14.1:7002 3000 2 > $ ./collie/collie vdi create image 600M -P > $ ./collie/collie node info > Id Size Used Use% > 0 188 GB 100 MB 0% > 1 188 GB 200 MB 0% > 2 188 GB 304 MB 0% > Total 564 GB 604 MB 0% > > Total virtual image size 600 MB > > If you specify zero to the number of virtual nodes, no data will not > be stored to the node. >
I guess 'not' in the 'no data will not' is not intended. Others looks good to me. Reviewed-by: Liu Yuan <[email protected]> > Signed-off-by: MORITA Kazutaka <[email protected]> > --- > sheep/group.c | 4 ++-- > sheep/sheep.c | 16 ++++++++++++++-- > sheep/sheep_priv.h | 2 +- > 3 files changed, 17 insertions(+), 5 deletions(-) > > diff --git a/sheep/group.c b/sheep/group.c > index 1a212e3..dda468c 100644 > --- a/sheep/group.c > +++ b/sheep/group.c > @@ -1382,7 +1382,7 @@ oom: > panic("failed to allocate memory for a confchg event\n"); > } > > -int create_cluster(int port, int64_t zone) > +int create_cluster(int port, int64_t zone, int nr_vnodes) > { > int ret; > struct cdrv_handlers handlers = { > @@ -1407,7 +1407,7 @@ int create_cluster(int port, int64_t zone) > return -1; > > sys->this_node.port = port; > - sys->this_node.nr_vnodes = SD_DEFAULT_VNODES; > + sys->this_node.nr_vnodes = nr_vnodes; > if (zone == -1) { > /* use last 4 bytes as zone id */ > uint8_t *b = sys->this_node.addr + 12; > diff --git a/sheep/sheep.c b/sheep/sheep.c > index 94b4a9e..b3b834b 100644 > --- a/sheep/sheep.c > +++ b/sheep/sheep.c > @@ -36,12 +36,13 @@ static struct option const long_options[] = { > {"debug", no_argument, NULL, 'd'}, > {"directio", no_argument, NULL, 'D'}, > {"zone", required_argument, NULL, 'z'}, > + {"vnodes", required_argument, NULL, 'v'}, > {"cluster", required_argument, NULL, 'c'}, > {"help", no_argument, NULL, 'h'}, > {NULL, 0, NULL, 0}, > }; > > -static const char *short_options = "p:fl:dDz:c:h"; > +static const char *short_options = "p:fl:dDz:v:c:h"; > > static void usage(int status) > { > @@ -59,6 +60,7 @@ Options:\n\ > -d, --debug include debug messages in the log\n\ > -D, --directio use direct IO when accessing the object store\n\ > -z, --zone specify the zone id\n\ > + -v, --vnodes specify the number of virtual nodes\n\ > -c, --cluster specify the cluster driver\n\ > -h, --help display this help and exit\n\ > ", PACKAGE_VERSION, program_name); > @@ -92,6 +94,7 @@ int main(int argc, char **argv) > int log_level = SDOG_INFO; > char path[PATH_MAX]; > int64_t zone = -1; > + int nr_vnodes = SD_DEFAULT_VNODES; > char *p; > struct cluster_driver *cdrv; > > @@ -139,6 +142,15 @@ int main(int argc, char **argv) > } > sys->this_node.zone = zone; > break; > + case 'v': > + nr_vnodes = strtol(optarg, &p, 10); > + if (optarg == p || nr_vnodes < 0 || SD_MAX_VNODES < > nr_vnodes) { > + fprintf(stderr, "Invalid number of virtual > nodes '%s': " > + "must be an integer between 0 and %u\n", > + optarg, SD_MAX_VNODES); > + exit(1); > + } > + break; > case 'c': > sys->cdrv = find_cdrv(optarg); > if (!sys->cdrv) { > @@ -192,7 +204,7 @@ int main(int argc, char **argv) > if (ret) > exit(1); > > - ret = create_cluster(port, zone); > + ret = create_cluster(port, zone, nr_vnodes); > if (ret) { > eprintf("failed to create sheepdog cluster\n"); > exit(1); > diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h > index 880bb74..db70c57 100644 > --- a/sheep/sheep_priv.h > +++ b/sheep/sheep_priv.h > @@ -235,7 +235,7 @@ int is_access_local(struct sd_vnode *e, int nr_nodes, > > void resume_pending_requests(void); > > -int create_cluster(int port, int64_t zone); > +int create_cluster(int port, int64_t zone, int nr_vnodes); > int leave_cluster(void); > > void start_cpg_event_work(void); -- sheepdog mailing list [email protected] http://lists.wpkg.org/mailman/listinfo/sheepdog
