[Sheepdog] [PATCH v3 11/13] sheep: fix group_handler face
MORITA Kazutaka
morita.kazutaka at gmail.com
Thu Apr 5 18:13:10 CEST 2012
At Thu, 1 Mar 2012 10:20:23 +0800,
Liu Yuan wrote:
>
> From: Liu Yuan <tailai.ly at taobao.com>
>
>
> Signed-off-by: Liu Yuan <tailai.ly at taobao.com>
> ---
> sheep/group.c | 13 +++++++++----
> 1 files changed, 9 insertions(+), 4 deletions(-)
This is much simpler and better approach than my coroutine code.
Acked-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp>
Thanks,
Kazutaka
>
> diff --git a/sheep/group.c b/sheep/group.c
> index 5206f24..f9bac11 100644
> --- a/sheep/group.c
> +++ b/sheep/group.c
> @@ -24,6 +24,7 @@
> #include "work.h"
> #include "cluster.h"
>
> +static int cdrv_fd;
> extern struct store_driver *sd_store;
> extern char *obj_path;
>
> @@ -669,6 +670,7 @@ static void sd_notify_handler(struct sd_node *sender,
> list_add_tail(&cevent->cpg_event_list, &sys->cpg_event_siblings);
>
> start_cpg_event_work();
> + unregister_event(cdrv_fd);
> }
>
> /*
> @@ -963,6 +965,7 @@ static void cpg_event_done(struct work *work)
> vprintf(SDOG_DEBUG, "free %p\n", cevent);
> cpg_event_free(cevent);
> cpg_event_running = 0;
> + register_event(cdrv_fd, group_handler, NULL);
>
> if (!list_empty(&sys->cpg_event_siblings))
> start_cpg_event_work();
> @@ -1238,6 +1241,7 @@ static void sd_join_handler(struct sd_node *joined,
>
> list_add_tail(&cevent->cpg_event_list, &sys->cpg_event_siblings);
> start_cpg_event_work();
> + unregister_event(cdrv_fd);
> break;
> case CJ_RES_FAIL:
> case CJ_RES_JOIN_LATER:
> @@ -1354,6 +1358,7 @@ static void sd_leave_handler(struct sd_node *left,
>
> list_add_tail(&cevent->cpg_event_list, &sys->cpg_event_siblings);
> start_cpg_event_work();
> + unregister_event(cdrv_fd);
>
> return;
> oom:
> @@ -1367,7 +1372,7 @@ oom:
>
> int create_cluster(int port, int64_t zone, int nr_vnodes)
> {
> - int fd, ret;
> + int ret;
> struct cdrv_handlers handlers = {
> .join_handler = sd_join_handler,
> .leave_handler = sd_leave_handler,
> @@ -1385,8 +1390,8 @@ int create_cluster(int port, int64_t zone, int nr_vnodes)
> }
> }
>
> - fd = sys->cdrv->init(&handlers, sys->cdrv_option, sys->this_node.addr);
> - if (fd < 0)
> + cdrv_fd = sys->cdrv->init(&handlers, sys->cdrv_option, sys->this_node.addr);
> + if (cdrv_fd < 0)
> return -1;
>
> sys->this_node.port = port;
> @@ -1413,7 +1418,7 @@ int create_cluster(int port, int64_t zone, int nr_vnodes)
>
> INIT_LIST_HEAD(&sys->cpg_event_siblings);
>
> - ret = register_event(fd, group_handler, NULL);
> + ret = register_event(cdrv_fd, group_handler, NULL);
> if (ret) {
> eprintf("failed to register epoll events (%d)\n", ret);
> return 1;
> --
> 1.7.8.2
>
> --
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog
More information about the sheepdog
mailing list