[Sheepdog] [PATCH v2] store: set correct path for farm in store_remove_obj

zituan at taobao.com zituan at taobao.com
Thu Apr 12 11:57:55 CEST 2012


From: Yibin Shen <zituan at taobao.com>

Signed-off-by: Yibin Shen <zituan at taobao.com>
---
 sheep/store.c |   23 +++++++++++++----------
 1 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/sheep/store.c b/sheep/store.c
index 739862c..b50ce22 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -587,19 +587,22 @@ int store_remove_obj(const struct sd_req *req, struct sd_rsp *rsp, void *data)
 {
 	struct sd_obj_req *hdr = (struct sd_obj_req *)req;
 	uint32_t epoch = hdr->epoch;
-	char path[1024];
-
-	snprintf(path, sizeof(path), "%s%08u/%016" PRIx64, obj_path,
-		 epoch, hdr->oid);
+	struct strbuf buf = STRBUF_INIT;
+	int ret = SD_RES_SUCCESS;
 
-	if (unlink(path) < 0) {
-		if (errno == ENOENT)
-			return SD_RES_NO_OBJ;
+	get_store_dir(&buf, epoch);
+	strbuf_addf(&buf, "%016" PRIx64, hdr->oid);
+	if (unlink(buf.buf) < 0) {
+		if (errno == ENOENT) {
+			ret = SD_RES_NO_OBJ;
+			goto out;
+		}
 		eprintf("%m\n");
-		return SD_RES_EIO;
+		ret =  SD_RES_EIO;
 	}
-
-	return SD_RES_SUCCESS;
+ out:
+	strbuf_release(&buf);
+	return ret;
 }
 
 int store_read_obj(const struct sd_req *req, struct sd_rsp *rsp, void *data)
-- 
1.7.7.3




More information about the sheepdog mailing list