This is necessary to keep strong consistency. Signed-off-by: MORITA Kazutaka <morita.kazutaka at lab.ntt.co.jp> --- Hi Chris, I guess you failed to create VDIs for some reasons, but Sheepdog returned success wrongly. I'm not sure this assumption is true, but it could be one of the reasons you got SD_RES_NO_OBJ. This patch ensures that vdi objects are fully replicated after you succeed in vdi creation. Thanks, Kazutaka sheep/sdnet.c | 16 ++++++++-------- 1 files changed, 8 insertions(+), 8 deletions(-) diff --git a/sheep/sdnet.c b/sheep/sdnet.c index ab88d8d..ef4c64f 100644 --- a/sheep/sdnet.c +++ b/sheep/sdnet.c @@ -570,7 +570,7 @@ int write_object(struct sheepdog_vnode_list_entry *e, uint64_t offset, uint16_t flags, int nr, int create) { struct sd_obj_req hdr; - int i, n, fd, ret, success = 0; + int i, n, fd, ret; char name[128]; if (nr > zones) @@ -585,10 +585,10 @@ int write_object(struct sheepdog_vnode_list_entry *e, ret = write_object_local(oid, data, datalen, offset, flags, nr, node_version, create); - if (ret != 0) + if (ret != 0) { eprintf("fail %"PRIx64" %"PRIx32"\n", oid, ret); - else - success++; + return -1; + } continue; } @@ -618,13 +618,13 @@ int write_object(struct sheepdog_vnode_list_entry *e, ret = exec_req(fd, (struct sd_req *)&hdr, data, &wlen, &rlen); close(fd); - if (ret) + if (ret) { eprintf("can't update vost %s\n", name); - else - success++; + return -1; + } } - return !success; + return 0; } int read_object(struct sheepdog_vnode_list_entry *e, -- 1.7.2.5 |