[Sheepdog] [PATCH 0/2] fix collie command errors during node member changes

Liu Yuan namei.unix at gmail.com
Fri Dec 16 14:20:01 CET 2011


On 12/16/2011 08:11 PM, Chris Webb wrote:

> Perhaps something like this would fit the bill?
> 


Acked-by: Liu Yuan <tailai.ly at taobao.com>

> -- >8 --
> Subject: [PATCH] Don't report an error for blocks not stored locally
>     
> Signed-off-by: Chris Webb <chris at arachsys.com>
> ---
>  sheep/simple_store.c |    8 +++++---
>  1 files changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/sheep/simple_store.c b/sheep/simple_store.c
> index 424589f..3f2c241 100644
> --- a/sheep/simple_store.c
> +++ b/sheep/simple_store.c
> @@ -76,17 +76,19 @@ static int simple_store_open(uint64_t oid, struct siocb *iocb, int create)
>  
>  	ret = open(path.buf, flags, def_fmode);
>  	if (ret < 0) {
> -		eprintf("failed to open %s: %m\n", path.buf);
>  		if (errno == ENOENT) {
>  			struct stat s;
>  
> -			ret = SD_RES_NO_OBJ;
>  			if (stat(obj_path, &s) < 0) {
>  				/* store directory is corrupted */
> -				eprintf("corrupted\n");
> +				eprintf("store directory corrupted: %m\n");
>  				ret = SD_RES_EIO;
> +			} else {
> +				dprintf("object %08u/%016" PRIx64 " not found locally\n", iocb->epoch, oid);
> +				ret = SD_RES_NO_OBJ;
>  			}
>  		} else
> +			eprintf("failed to open %s: %m\n", path.buf);
>  			ret = SD_RES_UNKNOWN;
>  		goto out;
>  	}





More information about the sheepdog mailing list