Current return value of the function find_vdi_name is quite simple. -1 stands for failure and 0 stands for success. It is not enough if caller A expects it returns information of a VDI and caller B expects it returns the VDI is existed or not.
So, it is better to enhance it to return SD_RES_XXX. As a result, the error message printed inside the function should be moved to the callers. Signed-off-by: Ruoyu <lian...@ucweb.com> --- dog/vdi.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/dog/vdi.c b/dog/vdi.c index 2cce69c..be9cbe2 100644 --- a/dog/vdi.c +++ b/dog/vdi.c @@ -353,16 +353,12 @@ static int find_vdi_name(const char *vdiname, uint32_t snapid, const char *tag, ret = dog_exec_req(&sd_nid, &hdr, buf); if (ret < 0) - return -1; + return SD_RES_EIO; - if (rsp->result != SD_RES_SUCCESS) { - sd_err("Cannot get VDI info for %s %d %s: %s", vdiname, snapid, - tag, sd_strerror(rsp->result)); - return -1; - } - *vid = rsp->vdi.vdi_id; + if (rsp->result == SD_RES_SUCCESS) + *vid = rsp->vdi.vdi_id; - return 0; + return rsp->result; } int read_vdi_obj(const char *vdiname, int snapid, const char *tag, @@ -373,8 +369,9 @@ int read_vdi_obj(const char *vdiname, int snapid, const char *tag, uint32_t vid; ret = find_vdi_name(vdiname, snapid, tag, &vid); - if (ret < 0) { - sd_err("Failed to open VDI %s", vdiname); + if (ret != SD_RES_SUCCESS) { + sd_err("Failed to open VDI %s (snapshot id: %d snapshot tag: %s)" + ": %s", vdiname, snapid, tag, sd_strerror(ret)); return EXIT_FAILURE; } @@ -824,8 +821,9 @@ static int do_vdi_delete(const char *vdiname, int snap_id, const char *snap_tag) int i = 0; ret = find_vdi_name(vdiname, snap_id, snap_tag, &vid); - if (ret < 0) { - sd_err("Failed to open VDI %s", vdiname); + if (ret != SD_RES_SUCCESS) { + sd_err("Failed to open VDI %s (snapshot id: %d snapshot tag: %s)" + ": %s", vdiname, snap_id, snap_tag, sd_strerror(ret)); ret = EXIT_FAILURE; goto out; } @@ -2439,8 +2437,10 @@ static int vdi_cache_flush(int argc, char **argv) ret = find_vdi_name(vdiname, vdi_cmd_data.snapshot_id, vdi_cmd_data.snapshot_tag, &vid); - if (ret < 0) { - sd_err("Failed to open VDI %s", vdiname); + if (ret != SD_RES_SUCCESS) { + sd_err("Failed to open VDI %s (snapshot id: %d snapshot tag: %s)" + ": %s", vdiname, vdi_cmd_data.snapshot_id, + vdi_cmd_data.snapshot_tag, sd_strerror(ret)); ret = EXIT_FAILURE; goto out; } @@ -2474,8 +2474,10 @@ static int vdi_cache_delete(int argc, char **argv) ret = find_vdi_name(vdiname, vdi_cmd_data.snapshot_id, vdi_cmd_data.snapshot_tag, &vid); - if (ret < 0) { - sd_err("Failed to open VDI %s", vdiname); + if (ret != SD_RES_SUCCESS) { + sd_err("Failed to open VDI %s (snapshot id: %d snapshot tag: %s)" + ": %s", vdiname, vdi_cmd_data.snapshot_id, + vdi_cmd_data.snapshot_tag, sd_strerror(ret)); ret = EXIT_FAILURE; goto out; } @@ -2563,8 +2565,10 @@ static int vdi_cache_purge(int argc, char **argv) vdiname = argv[optind++]; ret = find_vdi_name(vdiname, vdi_cmd_data.snapshot_id, vdi_cmd_data.snapshot_tag, &vid); - if (ret < 0) { - sd_err("Failed to open VDI %s", vdiname); + if (ret != SD_RES_SUCCESS) { + sd_err("Failed to open VDI %s (snapshot id: %d snapshot tag: %s)" + ": %s", vdiname, vdi_cmd_data.snapshot_id, + vdi_cmd_data.snapshot_tag, sd_strerror(ret)); ret = EXIT_FAILURE; goto out; } -- 1.8.3.2 -- sheepdog mailing list sheepdog@lists.wpkg.org http://lists.wpkg.org/mailman/listinfo/sheepdog