[sheepdog] [PATCH] sheep: exit when vdi bitmap collection is failed

Hitoshi Mitake mitake.hitoshi at gmail.com
Thu Oct 23 16:52:45 CEST 2014


At Wed, 22 Oct 2014 19:57:22 +0900,
Saeki Masaki wrote:
> 
> (2014/10/20 17:28), Hitoshi Mitake wrote:
> > In our test environment, we found an inconsistency of vdi bitmap
> > caused by failed colleciton process. The inconsistency is really
> > critical so calling panic() is much safer.
> > 
> > Cc: Saeki Masaki <saeki.masaki at po.ntts.co.jp>
> > Signed-off-by: Hitoshi Mitake <mitake.hitoshi at lab.ntt.co.jp>
> > ---
> >   sheep/group.c | 33 ++++++++++++++++++++++++---------
> >   1 file changed, 24 insertions(+), 9 deletions(-)
> 
> Looks good to me.
> Reviewed-by: Saeki Masaki <saeki.masaki at po.ntts.co.jp>

Thanks for your review, applied this patch.

Thanks,
Hitoshi

> 
> Regards,
> 
> 
> > 
> > diff --git a/sheep/group.c b/sheep/group.c
> > index 14c106a..f1104c1 100644
> > --- a/sheep/group.c
> > +++ b/sheep/group.c
> > @@ -525,9 +525,19 @@ static void do_get_vdis(struct work *work)
> >   		sd_debug("try to get vdi bitmap from %s",
> >   			 node_to_str(&w->joined));
> >   		ret = get_vdis_from(&w->joined);
> > -		if (ret != SD_RES_SUCCESS)
> > -			sd_alert("failed to get vdi bitmap from %s",
> > -				 node_to_str(&w->joined));
> > +		if (ret != SD_RES_SUCCESS) {
> > +			if (sys->cinfo.status == SD_STATUS_OK)
> > +				/*
> > +				 * SD_STATUS_OK means enough zones are gathered,
> > +				 * so failed vdi bitmap collection isn't
> > +				 * critical
> > +				 */
> > +				sd_alert("failed to get vdi bitmap from %s",
> > +					 node_to_str(&w->joined));
> > +			else
> > +				panic("failed to get vdi bitmap from %s",
> > +				      node_to_str(&w->joined));
> > +		}
> >   		return;
> >   	}
> >   
> > @@ -538,12 +548,17 @@ static void do_get_vdis(struct work *work)
> >   
> >   		sd_debug("try to get vdi bitmap from %s", node_to_str(n));
> >   		ret = get_vdis_from(n);
> > -		if (ret != SD_RES_SUCCESS) {
> > -			/* try to read from another node */
> > -			sd_alert("failed to get vdi bitmap from %s",
> > -				 node_to_str(n));
> > -			continue;
> > -		}
> > +		if (ret != SD_RES_SUCCESS)
> > +			/*
> > +			 * It means this sheep has missing vdi bitmap, and
> > +			 * reading bitmap from other sheep cannot be guaranteed
> > +			 * to success.
> > +			 *
> > +			 * Inconsistency of vdi bitmap between nodes is deathly
> > +			 * critical, so dying here is safer.
> > +			 */
> > +			panic("failed to get vdi bitmap from %s",
> > +			      node_to_str(n));
> >   
> >   		/*
> >   		 * TODO: If the target node has a valid vdi bitmap (the node has
> > 
> 
> 
> -- 
> sheepdog mailing list
> sheepdog at lists.wpkg.org
> http://lists.wpkg.org/mailman/listinfo/sheepdog



More information about the sheepdog mailing list