[sheepdog] [PATCH] sheep: don't collect cinfo when there are no other members

Hitoshi Mitake mitake.hitoshi at lab.ntt.co.jp
Mon Aug 18 04:03:46 CEST 2014


At Fri, 15 Aug 2014 11:44:13 +0900,
Hitoshi Mitake wrote:
> 
> Current master branch doesn't pass test 032. Because current sheep
> tries to collect cluster info (e.g. VDI locking information) even
> there are no other members. This patch fixes the problem.
> 
> Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> ---
>  sheep/group.c | 15 ++++++++++++---
>  1 file changed, 12 insertions(+), 3 deletions(-)

Applied.

Thanks,
Hitoshi

> 
> diff --git a/sheep/group.c b/sheep/group.c
> index 06a80bd..1bb22cc 100644
> --- a/sheep/group.c
> +++ b/sheep/group.c
> @@ -842,10 +842,19 @@ static void update_cluster_info(const struct cluster_info *cinfo,
>  		sockfd_cache_add_group(nroot);
>  
>  		if (0 < cinfo->epoch && cinfo->status == SD_STATUS_OK) {
> -			collect_work = xzalloc(sizeof(*collect_work));
> -			collect_work->epoch = cinfo->epoch - 1;
> -			collect_work->members = grab_vnode_info(
> +			struct vnode_info *members = grab_vnode_info(
>  				main_thread_get(current_vnode_info));
> +
> +			if (members->nr_nodes == 1) {
> +				sd_debug("Currently, there are no other"
> +					 " members. I don't have to collect"
> +					 "CINFO from others");
> +				put_vnode_info(members);
> +			} else {
> +				collect_work = xzalloc(sizeof(*collect_work));
> +				collect_work->epoch = cinfo->epoch - 1;
> +				collect_work->members = members;
> +			}
>  		}
>  	} else {
>  		if (0 < cinfo->epoch && cinfo->status == SD_STATUS_OK)
> -- 
> 1.8.3.2
> 



More information about the sheepdog mailing list