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

Chris Webb chris at arachsys.com
Fri Dec 16 13:11:01 CET 2011


Perhaps something like this would fit the bill?

-- >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;
 	}
-- 
1.7.5.4



More information about the sheepdog mailing list