On 04/12/2012 10:53 PM, Liu Yuan wrote: > From: Liu Yuan <tailai.ly at taobao.com> > > > Signed-off-by: Liu Yuan <tailai.ly at taobao.com> > --- > sheep/ops.c | 2 +- > sheep/sheep.c | 10 +++++----- > sheep/sheep_priv.h | 2 +- > 3 files changed, 7 insertions(+), 7 deletions(-) > > diff --git a/sheep/ops.c b/sheep/ops.c > index ee6dee1..809ef51 100644 > --- a/sheep/ops.c > +++ b/sheep/ops.c > @@ -504,7 +504,7 @@ static int local_flush_vdi(const struct sd_req *req, struct sd_rsp *rsp, void *d > struct object_cache *cache = find_object_cache(vid, 0); > > if (cache) { > - if (sys->sync_flush) > + if (!sys->async_flush) > return object_cache_push(cache); > else { > struct flush_work *fw = xmalloc(sizeof(*fw)); > diff --git a/sheep/sheep.c b/sheep/sheep.c > index 6d500ae..a0a44a9 100644 > --- a/sheep/sheep.c > +++ b/sheep/sheep.c > @@ -36,6 +36,7 @@ static struct option const long_options[] = { > {"loglevel", required_argument, NULL, 'l'}, > {"debug", no_argument, NULL, 'd'}, > {"directio", no_argument, NULL, 'D'}, > + {"asyncflush", no_argument, NULL, 'a'}, > {"zone", required_argument, NULL, 'z'}, > {"vnodes", required_argument, NULL, 'v'}, > {"cluster", required_argument, NULL, 'c'}, > @@ -43,7 +44,7 @@ static struct option const long_options[] = { > {NULL, 0, NULL, 0}, > }; > > -static const char *short_options = "p:fl:dDz:v:c:h"; > +static const char *short_options = "p:fl:dDaz:v:c:h"; > > static void usage(int status) > { > @@ -60,7 +61,7 @@ Options:\n\ > -l, --loglevel specify the level of logging detail\n\ > -d, --debug include debug messages in the log\n\ > -D, --directio use direct IO when accessing the object from object cache\n\ > - -S, --sync flush the object cache synchronously\n\ > + -a, --asyncflush flush the object cache asynchronously\n\ > -z, --zone specify the zone id\n\ > -v, --vnodes specify the number of virtual nodes\n\ > -c, --cluster specify the cluster driver\n\ > @@ -134,9 +135,8 @@ int main(int argc, char **argv) > dprintf("direct IO mode\n"); > sys->use_directio = 1; > break; > - case 'S': > - dprintf("sync flush\n"); > - sys->sync_flush = 1; > + case 'a': > + sys->async_flush = 1; > break; > case 'z': > zone = strtol(optarg, &p, 10); > diff --git a/sheep/sheep_priv.h b/sheep/sheep_priv.h > index c8d9bb4..78cc8aa 100644 > --- a/sheep/sheep_priv.h > +++ b/sheep/sheep_priv.h > @@ -150,7 +150,7 @@ struct cluster_info { > uint32_t recovered_epoch; > > int use_directio; > - uint8_t sync_flush; > + uint8_t async_flush; > > struct work_queue *event_wqueue; > struct work_queue *gateway_wqueue; Applied these two patches. And for 2/2, make the default as 4 and maximum to UINT32_MAX, I don't have time profiling which is the best default number, so I think might as well keep the original one and handle an option to users. Thanks, Yuan |