Skip to content

Commit f008cc1

Browse files
ikegami-tigaw
authored andcommitted
nvme: output NS management command result by json
This is to use the command result NSID created by TP. Signed-off-by: Tokunori Ikegami <[email protected]>
1 parent b4cd865 commit f008cc1

1 file changed

Lines changed: 25 additions & 23 deletions

File tree

nvme.c

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2829,26 +2829,37 @@ static int id_endurance_grp_list(int argc, char **argv, struct command *cmd,
28292829
return err;
28302830
}
28312831

2832-
static void ns_mgmt_show_error(struct nvme_dev *dev, int err, const char *cmd)
2832+
static bool is_ns_mgmt_support(struct nvme_dev *dev)
28332833
{
2834-
_cleanup_free_ struct nvme_id_ctrl *ctrl = NULL;
2834+
int err;
28352835

2836+
_cleanup_free_ struct nvme_id_ctrl *ctrl = nvme_alloc(sizeof(*ctrl));
2837+
2838+
if (ctrl)
2839+
return false;
2840+
2841+
err = nvme_cli_identify_ctrl(dev, ctrl);
2842+
if (err)
2843+
return false;
2844+
2845+
return le16_to_cpu(ctrl->oacs) & NVME_CTRL_OACS_NS_MGMT;
2846+
}
2847+
2848+
static void ns_mgmt_show_status(struct nvme_dev *dev, int err, char *cmd, __u32 nsid)
2849+
{
28362850
if (err < 0) {
2837-
nvme_show_error("%s namespace: %s", cmd, nvme_strerror(errno));
2851+
nvme_show_error("%s: %s", cmd, nvme_strerror(errno));
28382852
return;
28392853
}
28402854

28412855
nvme_show_init();
28422856

2843-
nvme_show_status(err);
2844-
2845-
ctrl = nvme_alloc(sizeof(*ctrl));
2846-
if (!ctrl)
2847-
return;
2848-
2849-
err = nvme_cli_identify_ctrl(dev, ctrl);
28502857
if (!err) {
2851-
if (!(le16_to_cpu(ctrl->oacs) & NVME_CTRL_OACS_NS_MGMT))
2858+
nvme_show_key_value(cmd, "success");
2859+
nvme_show_key_value("nsid", "%d", nsid);
2860+
} else {
2861+
nvme_show_status(err);
2862+
if (!is_ns_mgmt_support(dev))
28522863
nvme_show_result("NS management and attachment not supported");
28532864
}
28542865

@@ -2901,10 +2912,7 @@ static int delete_ns(int argc, char **argv, struct command *cmd, struct plugin *
29012912
}
29022913

29032914
err = nvme_cli_ns_mgmt_delete(dev, cfg.namespace_id, nvme_cfg.timeout);
2904-
if (!err)
2905-
printf("%s: Success, deleted nsid:%d\n", cmd->name, cfg.namespace_id);
2906-
else
2907-
ns_mgmt_show_error(dev, err, "delete");
2915+
ns_mgmt_show_status(dev, err, cmd->name, cfg.namespace_id);
29082916

29092917
return err;
29102918
}
@@ -2986,10 +2994,7 @@ static int nvme_attach_ns(int argc, char **argv, int attach, const char *desc, s
29862994
err = nvme_cli_ns_detach_ctrls(dev, cfg.namespace_id,
29872995
cntlist);
29882996

2989-
if (!err)
2990-
printf("%s: Success, nsid:%d\n", cmd->name, cfg.namespace_id);
2991-
else
2992-
ns_mgmt_show_error(dev, err, attach ? "attach" : "detach");
2997+
ns_mgmt_show_status(dev, err, cmd->name, cfg.namespace_id);
29932998

29942999
return err;
29953000
}
@@ -3369,10 +3374,7 @@ static int create_ns(int argc, char **argv, struct command *cmd, struct plugin *
33693374
data->phndl[i] = cpu_to_le16(phndl[i]);
33703375

33713376
err = nvme_cli_ns_mgmt_create(dev, data, &nsid, nvme_cfg.timeout, cfg.csi);
3372-
if (!err)
3373-
printf("%s: Success, created nsid:%d\n", cmd->name, nsid);
3374-
else
3375-
ns_mgmt_show_error(dev, err, "create");
3377+
ns_mgmt_show_status(dev, err, cmd->name, nsid);
33763378

33773379
return err;
33783380
}

0 commit comments

Comments
 (0)