It is easy to forget to set SD_FLAG_CMD_WRITE for write and create and hard
to debug, so set it directly in sd_init_req().

Signed-off-by: Liu Yuan <[email protected]>
---
 dog/common.c         |    1 -
 include/sheep.h      |    2 ++
 sheep/gateway.c      |    1 -
 sheep/object_cache.c |    3 ---
 sheep/store.c        |    3 ---
 5 files changed, 2 insertions(+), 8 deletions(-)

diff --git a/dog/common.c b/dog/common.c
index a2fb945..b70080e 100644
--- a/dog/common.c
+++ b/dog/common.c
@@ -100,7 +100,6 @@ int sd_write_object(uint64_t oid, uint64_t cow_oid, void 
*data,
                sd_init_req(&hdr, SD_OP_WRITE_OBJ);
 
        hdr.data_length = datalen;
-       hdr.flags = flags | SD_FLAG_CMD_WRITE;
        if (cow_oid)
                hdr.flags |= SD_FLAG_CMD_COW;
        if (direct)
diff --git a/include/sheep.h b/include/sheep.h
index 293e057..f93026f 100644
--- a/include/sheep.h
+++ b/include/sheep.h
@@ -54,6 +54,8 @@ static inline void sd_init_req(struct sd_req *req, uint8_t 
opcode)
        memset(req, 0, sizeof(*req));
        req->opcode = opcode;
        req->proto_ver = opcode < 0x80 ? SD_PROTO_VER : SD_SHEEP_PROTO_VER;
+       if (opcode == SD_OP_CREATE_AND_WRITE_OBJ || opcode == SD_OP_WRITE_OBJ)
+               req->flags = SD_FLAG_CMD_WRITE;
 }
 
 static inline int same_zone(const struct sd_vnode *v1,
diff --git a/sheep/gateway.c b/sheep/gateway.c
index e9d08c3..0f1e5ed 100644
--- a/sheep/gateway.c
+++ b/sheep/gateway.c
@@ -577,7 +577,6 @@ static int gateway_handle_cow(struct request *req)
 
        memcpy(buf + req_hdr->obj.offset, req->data, req_hdr->data_length);
        sd_init_req(&hdr, SD_OP_CREATE_AND_WRITE_OBJ);
-       hdr.flags = SD_FLAG_CMD_WRITE;
        hdr.obj.oid = oid;
        hdr.data_length = len;
        hdr.obj.offset = 0;
diff --git a/sheep/object_cache.c b/sheep/object_cache.c
index e1968fc..5f1b4f9 100644
--- a/sheep/object_cache.c
+++ b/sheep/object_cache.c
@@ -431,9 +431,7 @@ static int write_cache_object(struct object_cache_entry 
*entry, void *buf,
                sd_init_req(&hdr, SD_OP_CREATE_AND_WRITE_OBJ);
        else
                sd_init_req(&hdr, SD_OP_WRITE_OBJ);
-       hdr.flags =  SD_FLAG_CMD_WRITE;
        hdr.data_length = count;
-
        hdr.obj.oid = oid;
        hdr.obj.offset = offset;
 
@@ -481,7 +479,6 @@ static int push_cache_object(uint32_t vid, uint32_t idx, 
uint64_t bmap,
                sd_init_req(&hdr, SD_OP_CREATE_AND_WRITE_OBJ);
        else
                sd_init_req(&hdr, SD_OP_WRITE_OBJ);
-       hdr.flags = SD_FLAG_CMD_WRITE;
        hdr.data_length = data_length;
        hdr.obj.oid = oid;
        hdr.obj.offset = offset;
diff --git a/sheep/store.c b/sheep/store.c
index b092dea..4f1c599 100644
--- a/sheep/store.c
+++ b/sheep/store.c
@@ -370,12 +370,9 @@ forward_write:
                sd_init_req(&hdr, SD_OP_CREATE_AND_WRITE_OBJ);
        else
                sd_init_req(&hdr, SD_OP_WRITE_OBJ);
-       hdr.flags = SD_FLAG_CMD_WRITE;
        hdr.data_length = datalen;
-
        hdr.obj.oid = oid;
        hdr.obj.offset = offset;
-
        ret = exec_local_req(&hdr, data);
        if (ret != SD_RES_SUCCESS)
                sd_err("failed to write object %" PRIx64 ", %s", oid,
-- 
1.7.9.5

-- 
sheepdog mailing list
[email protected]
http://lists.wpkg.org/mailman/listinfo/sheepdog

Reply via email to