#include "parser.h"
#include "nvme-ioctl.h"
+#include "nvme-status.h"
#include "fabrics.h"
#include "nvme.h"
};
static int nvmf_get_log_page_discovery(const char *dev_path,
- struct nvmf_disc_rsp_page_hdr **logp, int *numrec)
+ struct nvmf_disc_rsp_page_hdr **logp, int *numrec, int *status)
{
struct nvmf_disc_rsp_page_hdr *log;
unsigned int hdr_size;
out_close:
close(fd);
out:
+ *status = nvme_status_to_errno(error, true);
return error;
}
struct nvmf_disc_rsp_page_hdr *log = NULL;
char *dev_name;
int instance, numrec = 0, ret, err;
+ int status = 0;
instance = add_ctrl(argstr);
if (instance < 0)
if (asprintf(&dev_name, "/dev/nvme%d", instance) < 0)
return -errno;
- ret = nvmf_get_log_page_discovery(dev_name, &log, &numrec);
+ ret = nvmf_get_log_page_discovery(dev_name, &log, &numrec, &status);
free(dev_name);
err = remove_ctrl(instance);
if (err)
case DISC_GET_NUMRECS:
fprintf(stderr,
"Get number of discovery log entries failed.\n");
+ ret = status;
break;
case DISC_GET_LOG:
fprintf(stderr, "Get discovery log entries failed.\n");
+ ret = status;
break;
case DISC_NO_LOG:
fprintf(stdout, "No discovery log entries to fetch.\n");
case DISC_NOT_EQUAL:
fprintf(stderr,
"Numrec values of last two get discovery log page not equal\n");
+ ret = -EBADSLT;
break;
default:
fprintf(stderr, "Get discovery log page failed: %d\n", ret);
}
out:
- return ret;
+ return nvme_status_to_errno(ret, true);
}
int connect(const char *desc, int argc, char **argv)
instance = add_ctrl(argstr);
if (instance < 0)
ret = instance;
+
out:
- return ret;
+ return nvme_status_to_errno(ret, true);
}
static int scan_sys_nvme_filter(const struct dirent *d)
}
out:
- return ret;
+ return nvme_status_to_errno(ret, true);
}
int disconnect_all(const char *desc, int argc, char **argv)
ret = disconnect_by_device(ctrl->name);
if (ret)
- goto out;
+ goto free;
}
}
-out:
+
+free:
free_subsys_list(slist, subcnt);
- return ret;
+out:
+ return nvme_status_to_errno(ret, true);
}