Signed-off-by: Christoph Hellwig --- collie/common.c | 6 +++++- collie/node.c | 4 +++- collie/vdi.c | 20 ++++++++++++-------- 3 files changed, 20 insertions(+), 10 deletions(-) Index: sheepdog/collie/common.c =================================================================== --- sheepdog.orig/collie/common.c 2012-04-25 18:36:48.596041147 +0200 +++ sheepdog/collie/common.c 2012-04-25 18:40:44.556047189 +0200 @@ -134,8 +134,10 @@ int parse_vdi(vdi_parser_func_t func, si unsigned int rlen, wlen = 0; fd = connect_to(sdhost, sdport); - if (fd < 0) + if (fd < 0) { + fprintf(stderr, "Failed to connect to %s:%d\n", sdhost, sdport); return fd; + } memset(&req, 0, sizeof(req)); @@ -146,6 +148,8 @@ int parse_vdi(vdi_parser_func_t func, si rlen = sizeof(vdi_inuse); ret = exec_req(fd, &req, vdi_inuse, &wlen, &rlen); if (ret < 0) { + fprintf(stderr, "Failed to read VDIs from %s:%d\n", + sdhost, sdport); close(fd); return ret; } Index: sheepdog/collie/node.c =================================================================== --- sheepdog.orig/collie/node.c 2012-04-25 18:36:54.864041308 +0200 +++ sheepdog/collie/node.c 2012-04-25 18:40:44.556047189 +0200 @@ -102,7 +102,9 @@ static int node_info(int argc, char **ar return EXIT_SYSFAIL; } - parse_vdi(cal_total_vdi_size, SD_INODE_HEADER_SIZE, &total_vdi_size); + if (parse_vdi(cal_total_vdi_size, SD_INODE_HEADER_SIZE, + &total_vdi_size) < 0) + return EXIT_SYSFAIL; size_to_str(total_size, total_str, sizeof(total_str)); size_to_str(total_size - total_avail, avail_str, sizeof(avail_str)); Index: sheepdog/collie/vdi.c =================================================================== --- sheepdog.orig/collie/vdi.c 2012-04-25 18:36:48.596041147 +0200 +++ sheepdog/collie/vdi.c 2012-04-25 18:40:44.556047189 +0200 @@ -320,10 +320,12 @@ static int vdi_list(int argc, char **arg struct get_vdi_info info; memset(&info, 0, sizeof(info)); info.name = vdiname; - parse_vdi(print_vdi_list, SD_INODE_SIZE, &info); + if (parse_vdi(print_vdi_list, SD_INODE_SIZE, &info) < 0) + return EXIT_SYSFAIL; return EXIT_SUCCESS; } else { - parse_vdi(print_vdi_list, SD_INODE_SIZE, NULL); + if (parse_vdi(print_vdi_list, SD_INODE_SIZE, NULL) < 0) + return EXIT_SYSFAIL; return EXIT_SUCCESS; } } @@ -331,7 +333,8 @@ static int vdi_list(int argc, char **arg static int vdi_tree(int argc, char **argv) { init_tree(); - parse_vdi(print_vdi_tree, SD_INODE_HEADER_SIZE, NULL); + if (parse_vdi(print_vdi_tree, SD_INODE_HEADER_SIZE, NULL) < 0) + return EXIT_SYSFAIL; dump_tree(); return EXIT_SUCCESS; @@ -344,7 +347,8 @@ static int vdi_graph(int argc, char **ar printf(" node [shape = \"box\", fontname = \"Courier\"];\n\n"); printf(" \"0\" [shape = \"ellipse\", label = \"root\"];\n\n"); - parse_vdi(print_vdi_graph, SD_INODE_HEADER_SIZE, NULL); + if (parse_vdi(print_vdi_graph, SD_INODE_HEADER_SIZE, NULL) < 0) + return EXIT_SYSFAIL; /* print a footer */ printf("}\n"); @@ -747,7 +751,6 @@ static int vdi_object(int argc, char **a { char *vdiname = argv[optind]; unsigned idx = vdi_cmd_data.index; - int ret; struct get_vdi_info info; uint32_t vid; @@ -757,7 +760,8 @@ static int vdi_object(int argc, char **a info.vid = 0; info.snapid = vdi_cmd_data.snapshot_id; - ret = parse_vdi(get_oid, SD_INODE_HEADER_SIZE, &info); + if (parse_vdi(get_oid, SD_INODE_HEADER_SIZE, &info) < 0) + return EXIT_SYSFAIL; vid = info.vid; if (vid == 0) { @@ -868,7 +872,6 @@ static int vdi_track(int argc, char **ar { char *vdiname = argv[optind]; unsigned idx = vdi_cmd_data.index; - int ret; struct get_vdi_info info; uint32_t vid; @@ -878,7 +881,8 @@ static int vdi_track(int argc, char **ar info.vid = 0; info.snapid = vdi_cmd_data.snapshot_id; - ret = parse_vdi(get_oid, SD_INODE_HEADER_SIZE, &info); + if (parse_vdi(get_oid, SD_INODE_HEADER_SIZE, &info) < 0) + return EXIT_SYSFAIL; vid = info.vid; if (vid == 0) {