@@ -1354,10 +1354,9 @@ static int get_fw_log(int argc, char **argv, struct command *cmd, struct plugin
13541354 return err ;
13551355}
13561356
1357- static int get_changed_ns_list_log (int argc , char * * argv , struct command * cmd , struct plugin * plugin )
1357+ static int get_changed_ns_list_log (int argc , char * * argv , bool alloc )
13581358{
1359- const char * desc = "Retrieve Changed Namespaces log for the given device "
1360- "in either decoded format (default) or binary." ;
1359+ _cleanup_free_ char * desc = NULL ;
13611360
13621361 _cleanup_free_ struct nvme_ns_list * changed_ns_list_log = NULL ;
13631362 _cleanup_nvme_dev_ struct nvme_dev * dev = NULL ;
@@ -1375,6 +1374,11 @@ static int get_changed_ns_list_log(int argc, char **argv, struct command *cmd, s
13751374 NVME_ARGS (opts ,
13761375 OPT_FLAG ("raw-binary" , 'b' , & cfg .raw_binary , raw_output ));
13771376
1377+ if (asprintf (& desc , "Retrieve Changed %s Namespaces log for the given device %s" ,
1378+ alloc ? "Allocated" : "Attached" ,
1379+ "in either decoded format (default) or binary." ) < 0 )
1380+ desc = NULL ;
1381+
13781382 err = parse_and_open (& dev , argc , argv , desc , opts );
13791383 if (err )
13801384 return err ;
@@ -1392,19 +1396,36 @@ static int get_changed_ns_list_log(int argc, char **argv, struct command *cmd, s
13921396 if (!changed_ns_list_log )
13931397 return - ENOMEM ;
13941398
1395- err = nvme_cli_get_log_changed_ns_list (dev , true,
1396- changed_ns_list_log );
1399+ if (alloc )
1400+ err = nvme_cli_get_log_changed_alloc_ns_list (dev , true,
1401+ sizeof (* changed_ns_list_log ),
1402+ changed_ns_list_log );
1403+ else
1404+ err = nvme_cli_get_log_changed_ns_list (dev , true,
1405+ changed_ns_list_log );
13971406 if (!err )
1398- nvme_show_changed_ns_list_log (changed_ns_list_log ,
1399- dev -> name , flags );
1407+ nvme_show_changed_ns_list_log (changed_ns_list_log , dev -> name , flags , alloc );
14001408 else if (err > 0 )
14011409 nvme_show_status (err );
14021410 else
1403- nvme_show_error ("changed ns list log: %s" , nvme_strerror (errno ));
1411+ nvme_show_error ("changed %s ns list log: %s" , alloc ? "allocated" : "attached" ,
1412+ nvme_strerror (errno ));
14041413
14051414 return err ;
14061415}
14071416
1417+ static int get_changed_attach_ns_list_log (int argc , char * * argv , struct command * cmd ,
1418+ struct plugin * plugin )
1419+ {
1420+ return get_changed_ns_list_log (argc , argv , false);
1421+ }
1422+
1423+ static int get_changed_alloc_ns_list_log (int argc , char * * argv , struct command * cmd ,
1424+ struct plugin * plugin )
1425+ {
1426+ return get_changed_ns_list_log (argc , argv , true);
1427+ }
1428+
14081429static int get_pred_lat_per_nvmset_log (int argc , char * * argv ,
14091430 struct command * cmd , struct plugin * plugin )
14101431{
0 commit comments