On 04/13/2012 09:54 PM, Liu Yuan wrote: > From: Liu Yuan <tailai.ly at taobao.com> > > We should pass nr_vnodes to the obj_to_sheep() > > - rename read_copy_from_replica to get better consistent naming > > Signed-off-by: Liu Yuan <tailai.ly at taobao.com> > --- > sheep/store.c | 13 ++++++++----- > 1 files changed, 8 insertions(+), 5 deletions(-) > > diff --git a/sheep/store.c b/sheep/store.c > index b50ce22..81555ba 100644 > --- a/sheep/store.c > +++ b/sheep/store.c > @@ -197,10 +197,10 @@ int get_obj_list(const struct sd_list_req *hdr, struct sd_list_rsp *rsp, void *d > return res; > } > > -static int read_copy_from_cluster(struct request *req, uint32_t epoch, > +static int read_copy_from_replica(struct request *req, uint32_t epoch, > uint64_t oid, char *buf) > { > - int i, n, nr, ret; > + int i, n, nr, nr_vnodes, ret; > unsigned wlen, rlen; > char name[128]; > struct sd_vnode *e; > @@ -210,12 +210,14 @@ static int read_copy_from_cluster(struct request *req, uint32_t epoch, > int fd; > > e = req->entry; > + nr_vnodes = req->nr_vnodes; > + > nr = sys->nr_sobjs; > if (nr > req->nr_zones) > nr = req->nr_zones; > > for (i = 0; i < nr; i++) { > - n = obj_to_sheep(e, nr, oid, i); > + n = obj_to_sheep(e, nr_vnodes, oid, i); > > addr_to_str(name, sizeof(name), e[n].addr, 0); > > @@ -255,6 +257,7 @@ static int read_copy_from_cluster(struct request *req, uint32_t epoch, > > close(fd); > > + dprintf("%x, %x\n", ret, rsp->result); > if (ret) > continue; > > @@ -712,7 +715,7 @@ int store_create_and_write_obj(const struct sd_req *req, struct sd_rsp *rsp, voi > if (ret != SD_RES_SUCCESS) > return ret; > if (hdr->flags & SD_FLAG_CMD_COW) { > - dprintf("%" PRIu64 ", %" PRIx64 "\n", hdr->oid, hdr->cow_oid); > + dprintf("%" PRIx64 ", %" PRIx64 "\n", hdr->oid, hdr->cow_oid); > > buf = valloc(SD_DATA_OBJ_SIZE); > if (!buf) { > @@ -720,7 +723,7 @@ int store_create_and_write_obj(const struct sd_req *req, struct sd_rsp *rsp, voi > goto out; > } > if (hdr->data_length != SD_DATA_OBJ_SIZE) { > - ret = read_copy_from_cluster(request, hdr->epoch, hdr->cow_oid, buf); > + ret = read_copy_from_replica(request, hdr->epoch, hdr->cow_oid, buf); > if (ret != SD_RES_SUCCESS) { > eprintf("failed to read cow object\n"); > goto out; Applied. Thanks, Yuan |