[Sheepdog] [PATCH] store: set correct path for farm in store_remove_obj
Liu Yuan
namei.unix at gmail.com
Thu Apr 12 11:23:58 CEST 2012
On 04/12/2012 05:02 PM, zituan at taobao.com wrote:
> From: Yibin Shen <zituan at taobao.com>
>
>
> Signed-off-by: Yibin Shen <zituan at taobao.com>
> ---
> sheep/store.c | 19 ++++++++++++-------
> 1 files changed, 12 insertions(+), 7 deletions(-)
>
> diff --git a/sheep/store.c b/sheep/store.c
> index 739862c..027443f 100644
> --- a/sheep/store.c
> +++ b/sheep/store.c
> @@ -588,18 +588,23 @@ 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];
> + struct strbuf store_dir = STRBUF_INIT;
> + int ret = SD_RES_SUCCESS;
> + get_store_dir(&store_dir, epoch);
>
> - snprintf(path, sizeof(path), "%s%08u/%016" PRIx64, obj_path,
> - epoch, hdr->oid);
> + snprintf(path, sizeof(path), "%s%016" PRIx64, store_dir.buf, hdr->oid);
>
Would better use strbuf_add() to add oid to the buffer, then unlink(buf.buf)
Thanks,
Yuan
> if (unlink(path) < 0) {
> - if (errno == ENOENT)
> - return SD_RES_NO_OBJ;
> + 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(&store_dir);
> + return ret;
> }
>
> int store_read_obj(const struct sd_req *req, struct sd_rsp *rsp, void *data)
More information about the sheepdog
mailing list