From mboxrd@z Thu Jan 1 00:00:00 1970 From: minwoo.im.dev@gmail.com (Minwoo Im) Date: Mon, 20 May 2019 03:39:12 +0900 Subject: [PATCH V3 3/4] nvme: Return errno mapped for nvme error status In-Reply-To: <20190519183913.3493-1-minwoo.im.dev@gmail.com> References: <20190519183913.3493-1-minwoo.im.dev@gmail.com> Message-ID: <20190519183913.3493-4-minwoo.im.dev@gmail.com> If ioctl module has returned a nvme error status, it will be returned by being converted to a mapped errno value which has been provided by previous commits. Cc: Keith Busch Cc: Chaitanya Kulkarni Signed-off-by: Minwoo Im --- nvme.c | 112 +++++++++++++++++++++++---------------------------------- 1 file changed, 45 insertions(+), 67 deletions(-) diff --git a/nvme.c b/nvme.c index e0f7552..8e153b8 100644 --- a/nvme.c +++ b/nvme.c @@ -48,6 +48,7 @@ #include "common.h" #include "nvme-print.h" #include "nvme-ioctl.h" +#include "nvme-status.h" #include "nvme-lightnvm.h" #include "plugin.h" @@ -220,7 +221,7 @@ static int get_smart_log(int argc, char **argv, struct command *cmd, struct plug close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int get_ana_log(int argc, char **argv, struct command *cmd, @@ -292,7 +293,7 @@ static int get_ana_log(int argc, char **argv, struct command *cmd, free(ana_log); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int get_telemetry_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -419,7 +420,7 @@ static int get_telemetry_log(int argc, char **argv, struct command *cmd, struct free(page_log); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int get_endurance_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -473,7 +474,7 @@ static int get_endurance_log(int argc, char **argv, struct command *cmd, struct close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int get_effects_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -535,7 +536,7 @@ static int get_effects_log(int argc, char **argv, struct command *cmd, struct pl close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int get_error_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -619,7 +620,7 @@ static int get_error_log(int argc, char **argv, struct command *cmd, struct plug close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int get_fw_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -673,7 +674,7 @@ static int get_fw_log(int argc, char **argv, struct command *cmd, struct plugin close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int get_changed_ns_list_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -728,8 +729,7 @@ static int get_changed_ns_list_log(int argc, char **argv, struct command *cmd, s close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int get_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -828,7 +828,7 @@ static int get_log(int argc, char **argv, struct command *cmd, struct plugin *pl close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int sanitize_log(int argc, char **argv, struct command *command, struct plugin *plugin) @@ -890,8 +890,7 @@ static int sanitize_log(int argc, char **argv, struct command *command, struct p close_fd: close(fd); - - return ret; + return nvme_status_to_errno(ret, false); } static int list_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -940,10 +939,8 @@ static int list_ctrl(int argc, char **argv, struct command *cmd, struct plugin * perror("id controller list"); free(cntlist); - close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int list_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -986,8 +983,7 @@ static int list_ns(int argc, char **argv, struct command *cmd, struct plugin *pl perror("id namespace list"); close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int get_nsid(int fd) @@ -1058,8 +1054,7 @@ static int delete_ns(int argc, char **argv, struct command *cmd, struct plugin * close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int nvme_attach_ns(int argc, char **argv, int attach, const char *desc, struct command *cmd) @@ -1123,8 +1118,7 @@ static int nvme_attach_ns(int argc, char **argv, int attach, const char *desc, s close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int attach_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -1216,7 +1210,7 @@ static int create_ns(int argc, char **argv, struct command *cmd, struct plugin * fprintf(stderr, "identify failed\n"); show_nvme_status(err); } - return err; + return nvme_status_to_errno(err, false); } for (i = 0; i < 16; ++i) { if ((1 << ns.lbaf[i].ds) == cfg.bs && ns.lbaf[i].ms == 0) { @@ -1246,8 +1240,7 @@ static int create_ns(int argc, char **argv, struct command *cmd, struct plugin * perror("create namespace"); close(fd); - - return err; + return nvme_status_to_errno(err, false); } char *nvme_char_from_block(char *block) @@ -1860,8 +1853,7 @@ static int list(int argc, char **argv, struct command *cmd, struct plugin *plugi for (i = 0; i < n; i++) free(devices[i]); free(devices); - - return ret; + return nvme_status_to_errno(ret, false); } int __id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin, void (*vs)(__u8 *vs, struct json_object *root)) @@ -1934,8 +1926,7 @@ int __id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin, close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int id_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2015,8 +2006,7 @@ static int ns_descs(int argc, char **argv, struct command *cmd, struct plugin *p close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2102,8 +2092,7 @@ static int id_ns(int argc, char **argv, struct command *cmd, struct plugin *plug close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int id_nvmset(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2160,8 +2149,7 @@ static int id_nvmset(int argc, char **argv, struct command *cmd, struct plugin * close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int get_ns_id(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2249,8 +2237,7 @@ static int virtual_mgmt(int argc, char **argv, struct command *cmd, struct plugi perror("virt-mgmt"); close(fd); - return err; - + return nvme_status_to_errno(err, false); } static int list_secondary_ctrl(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2374,7 +2361,7 @@ static int device_self_test(int argc, char **argv, struct command *cmd, struct p perror("Device self-test"); close(fd); - return err; + return nvme_status_to_errno(err, false); } static int self_test_log(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2429,8 +2416,7 @@ static int self_test_log(int argc, char **argv, struct command *cmd, struct plug close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int get_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2560,8 +2546,7 @@ static int get_feature(int argc, char **argv, struct command *cmd, struct plugin close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int fw_download(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2665,8 +2650,7 @@ static int fw_download(int argc, char **argv, struct command *cmd, struct plugin close(fw_fd); close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static char *nvme_fw_status_reset_type(__u32 status) @@ -2758,8 +2742,7 @@ static int fw_commit(int argc, char **argv, struct command *cmd, struct plugin * close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int subsystem_reset(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -2926,8 +2909,7 @@ static int sanitize(int argc, char **argv, struct command *cmd, struct plugin *p close_fd: close(fd); - - return ret; + return nvme_status_to_errno(ret, false); } static int show_registers(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3051,8 +3033,7 @@ static int get_property(int argc, char **argv, struct command *cmd, struct plugi close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int set_property(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3106,8 +3087,7 @@ static int set_property(int argc, char **argv, struct command *cmd, struct plugi close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int format(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3198,7 +3178,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu fprintf(stderr, "identify failed\n"); show_nvme_status(err); } - return err; + return nvme_status_to_errno(err, false); } prev_lbaf = ns.flbas & 0xf; @@ -3264,8 +3244,7 @@ static int format(int argc, char **argv, struct command *cmd, struct plugin *plu close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int set_feature(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3384,7 +3363,7 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin free(buf); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int sec_send(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3631,7 +3610,7 @@ free: free(buf); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int write_uncor(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3685,8 +3664,7 @@ static int write_uncor(int argc, char **argv, struct command *cmd, struct plugin close_fd: close(fd); - - return err; + return nvme_status_to_errno(err, false); } static int write_zeroes(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3777,7 +3755,7 @@ static int write_zeroes(int argc, char **argv, struct command *cmd, struct plugi close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int dsm(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3877,7 +3855,7 @@ static int dsm(int argc, char **argv, struct command *cmd, struct plugin *plugin close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int flush(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3924,7 +3902,7 @@ static int flush(int argc, char **argv, struct command *cmd, struct plugin *plug printf("NVMe Flush: success\n"); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int resv_acquire(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -3998,7 +3976,7 @@ static int resv_acquire(int argc, char **argv, struct command *cmd, struct plugi close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int resv_register(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -4075,7 +4053,7 @@ static int resv_register(int argc, char **argv, struct command *cmd, struct plug close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int resv_release(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -4148,7 +4126,7 @@ static int resv_release(int argc, char **argv, struct command *cmd, struct plugi close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int resv_report(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -4487,7 +4465,7 @@ static int submit_io(int opcode, char *command, const char *desc, close(dfd); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int compare(int argc, char **argv, struct command *cmd, struct plugin *plugin) @@ -4723,7 +4701,7 @@ free: free(buf); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int passthru(int argc, char **argv, int ioctl_cmd, const char *desc, struct command *cmd) @@ -4923,7 +4901,7 @@ static int passthru(int argc, char **argv, int ioctl_cmd, const char *desc, stru close(wfd); close_fd: close(fd); - return err; + return nvme_status_to_errno(err, false); } static int io_passthru(int argc, char **argv, struct command *cmd, struct plugin *plugin) -- 2.21.0