@@ -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