[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