@@ -4873,8 +4873,56 @@ static int get_feature(int argc, char **argv, struct command *cmd,
48734873 .human_readable = false,
48744874 };
48754875
4876+ OPT_VALS (feature_name ) = {
4877+ VAL_BYTE ("arbitration" , NVME_FEAT_FID_ARBITRATION ),
4878+ VAL_BYTE ("power_mgmt" , NVME_FEAT_FID_POWER_MGMT ),
4879+ VAL_BYTE ("lba_range" , NVME_FEAT_FID_LBA_RANGE ),
4880+ VAL_BYTE ("temp_thresh" , NVME_FEAT_FID_TEMP_THRESH ),
4881+ VAL_BYTE ("err_recovery" , NVME_FEAT_FID_ERR_RECOVERY ),
4882+ VAL_BYTE ("volatile_wc" , NVME_FEAT_FID_VOLATILE_WC ),
4883+ VAL_BYTE ("num_queues" , NVME_FEAT_FID_NUM_QUEUES ),
4884+ VAL_BYTE ("irq_coalesce" , NVME_FEAT_FID_IRQ_COALESCE ),
4885+ VAL_BYTE ("irq_config" , NVME_FEAT_FID_IRQ_CONFIG ),
4886+ VAL_BYTE ("write_atomic" , NVME_FEAT_FID_WRITE_ATOMIC ),
4887+ VAL_BYTE ("async_event" , NVME_FEAT_FID_ASYNC_EVENT ),
4888+ VAL_BYTE ("auto_pst" , NVME_FEAT_FID_AUTO_PST ),
4889+ VAL_BYTE ("host_mem_buf" , NVME_FEAT_FID_HOST_MEM_BUF ),
4890+ VAL_BYTE ("timestamp" , NVME_FEAT_FID_TIMESTAMP ),
4891+ VAL_BYTE ("kato" , NVME_FEAT_FID_KATO ),
4892+ VAL_BYTE ("hctm" , NVME_FEAT_FID_HCTM ),
4893+ VAL_BYTE ("nopsc" , NVME_FEAT_FID_NOPSC ),
4894+ VAL_BYTE ("rrl" , NVME_FEAT_FID_RRL ),
4895+ VAL_BYTE ("plm_config" , NVME_FEAT_FID_PLM_CONFIG ),
4896+ VAL_BYTE ("plm_window" , NVME_FEAT_FID_PLM_WINDOW ),
4897+ VAL_BYTE ("lba_sts_interval" , NVME_FEAT_FID_LBA_STS_INTERVAL ),
4898+ VAL_BYTE ("host_behavior" , NVME_FEAT_FID_HOST_BEHAVIOR ),
4899+ VAL_BYTE ("sanitize" , NVME_FEAT_FID_SANITIZE ),
4900+ VAL_BYTE ("endurance_evt_cfg" , NVME_FEAT_FID_ENDURANCE_EVT_CFG ),
4901+ VAL_BYTE ("iocs_profile" , NVME_FEAT_FID_IOCS_PROFILE ),
4902+ VAL_BYTE ("spinup_control" , NVME_FEAT_FID_SPINUP_CONTROL ),
4903+ VAL_BYTE ("power_loss_signal" , NVME_FEAT_FID_POWER_LOSS_SIGNAL ),
4904+ VAL_BYTE ("perf_characteristics" , NVME_FEAT_FID_PERF_CHARACTERISTICS ),
4905+ VAL_BYTE ("fdp" , NVME_FEAT_FID_FDP ),
4906+ VAL_BYTE ("fdp_events" , NVME_FEAT_FID_FDP_EVENTS ),
4907+ VAL_BYTE ("ns_admin_label" , NVME_FEAT_FID_NS_ADMIN_LABEL ),
4908+ VAL_BYTE ("key_value" , NVME_FEAT_FID_KEY_VALUE ),
4909+ VAL_BYTE ("ctrl_data_queue" , NVME_FEAT_FID_CTRL_DATA_QUEUE ),
4910+ VAL_BYTE ("emb_mgmt_ctrl_addr" , NVME_FEAT_FID_EMB_MGMT_CTRL_ADDR ),
4911+ VAL_BYTE ("host_mgmt_agent_addr" , NVME_FEAT_FID_HOST_MGMT_AGENT_ADDR ),
4912+ VAL_BYTE ("enh_ctrl_metadata" , NVME_FEAT_FID_ENH_CTRL_METADATA ),
4913+ VAL_BYTE ("ctrl_metadata" , NVME_FEAT_FID_CTRL_METADATA ),
4914+ VAL_BYTE ("ns_metadata" , NVME_FEAT_FID_NS_METADATA ),
4915+ VAL_BYTE ("sw_progress" , NVME_FEAT_FID_SW_PROGRESS ),
4916+ VAL_BYTE ("host_id" , NVME_FEAT_FID_HOST_ID ),
4917+ VAL_BYTE ("resv_mask" , NVME_FEAT_FID_RESV_MASK ),
4918+ VAL_BYTE ("resv_persist" , NVME_FEAT_FID_RESV_PERSIST ),
4919+ VAL_BYTE ("write_protect" , NVME_FEAT_FID_WRITE_PROTECT ),
4920+ VAL_BYTE ("bp_write_protect" , NVME_FEAT_FID_BP_WRITE_PROTECT ),
4921+ VAL_END ()
4922+ };
4923+
48764924 NVME_ARGS (opts ,
4877- OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id ),
4925+ OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id , feature_name ),
48784926 OPT_UINT ("namespace-id" , 'n' , & cfg .namespace_id , namespace_id_desired ),
48794927 OPT_BYTE ("sel" , 's' , & cfg .sel , sel ),
48804928 OPT_UINT ("data-len" , 'l' , & cfg .data_len , buf_len ),
@@ -6656,9 +6704,57 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin
66566704 .save = false,
66576705 };
66586706
6707+ OPT_VALS (feature_name ) = {
6708+ VAL_BYTE ("arbitration" , NVME_FEAT_FID_ARBITRATION ),
6709+ VAL_BYTE ("power_mgmt" , NVME_FEAT_FID_POWER_MGMT ),
6710+ VAL_BYTE ("lba_range" , NVME_FEAT_FID_LBA_RANGE ),
6711+ VAL_BYTE ("temp_thresh" , NVME_FEAT_FID_TEMP_THRESH ),
6712+ VAL_BYTE ("err_recovery" , NVME_FEAT_FID_ERR_RECOVERY ),
6713+ VAL_BYTE ("volatile_wc" , NVME_FEAT_FID_VOLATILE_WC ),
6714+ VAL_BYTE ("num_queues" , NVME_FEAT_FID_NUM_QUEUES ),
6715+ VAL_BYTE ("irq_coalesce" , NVME_FEAT_FID_IRQ_COALESCE ),
6716+ VAL_BYTE ("irq_config" , NVME_FEAT_FID_IRQ_CONFIG ),
6717+ VAL_BYTE ("write_atomic" , NVME_FEAT_FID_WRITE_ATOMIC ),
6718+ VAL_BYTE ("async_event" , NVME_FEAT_FID_ASYNC_EVENT ),
6719+ VAL_BYTE ("auto_pst" , NVME_FEAT_FID_AUTO_PST ),
6720+ VAL_BYTE ("host_mem_buf" , NVME_FEAT_FID_HOST_MEM_BUF ),
6721+ VAL_BYTE ("timestamp" , NVME_FEAT_FID_TIMESTAMP ),
6722+ VAL_BYTE ("kato" , NVME_FEAT_FID_KATO ),
6723+ VAL_BYTE ("hctm" , NVME_FEAT_FID_HCTM ),
6724+ VAL_BYTE ("nopsc" , NVME_FEAT_FID_NOPSC ),
6725+ VAL_BYTE ("rrl" , NVME_FEAT_FID_RRL ),
6726+ VAL_BYTE ("plm_config" , NVME_FEAT_FID_PLM_CONFIG ),
6727+ VAL_BYTE ("plm_window" , NVME_FEAT_FID_PLM_WINDOW ),
6728+ VAL_BYTE ("lba_sts_interval" , NVME_FEAT_FID_LBA_STS_INTERVAL ),
6729+ VAL_BYTE ("host_behavior" , NVME_FEAT_FID_HOST_BEHAVIOR ),
6730+ VAL_BYTE ("sanitize" , NVME_FEAT_FID_SANITIZE ),
6731+ VAL_BYTE ("endurance_evt_cfg" , NVME_FEAT_FID_ENDURANCE_EVT_CFG ),
6732+ VAL_BYTE ("iocs_profile" , NVME_FEAT_FID_IOCS_PROFILE ),
6733+ VAL_BYTE ("spinup_control" , NVME_FEAT_FID_SPINUP_CONTROL ),
6734+ VAL_BYTE ("power_loss_signal" , NVME_FEAT_FID_POWER_LOSS_SIGNAL ),
6735+ VAL_BYTE ("perf_characteristics" , NVME_FEAT_FID_PERF_CHARACTERISTICS ),
6736+ VAL_BYTE ("fdp" , NVME_FEAT_FID_FDP ),
6737+ VAL_BYTE ("fdp_events" , NVME_FEAT_FID_FDP_EVENTS ),
6738+ VAL_BYTE ("ns_admin_label" , NVME_FEAT_FID_NS_ADMIN_LABEL ),
6739+ VAL_BYTE ("key_value" , NVME_FEAT_FID_KEY_VALUE ),
6740+ VAL_BYTE ("ctrl_data_queue" , NVME_FEAT_FID_CTRL_DATA_QUEUE ),
6741+ VAL_BYTE ("emb_mgmt_ctrl_addr" , NVME_FEAT_FID_EMB_MGMT_CTRL_ADDR ),
6742+ VAL_BYTE ("host_mgmt_agent_addr" , NVME_FEAT_FID_HOST_MGMT_AGENT_ADDR ),
6743+ VAL_BYTE ("enh_ctrl_metadata" , NVME_FEAT_FID_ENH_CTRL_METADATA ),
6744+ VAL_BYTE ("ctrl_metadata" , NVME_FEAT_FID_CTRL_METADATA ),
6745+ VAL_BYTE ("ns_metadata" , NVME_FEAT_FID_NS_METADATA ),
6746+ VAL_BYTE ("sw_progress" , NVME_FEAT_FID_SW_PROGRESS ),
6747+ VAL_BYTE ("host_id" , NVME_FEAT_FID_HOST_ID ),
6748+ VAL_BYTE ("resv_mask" , NVME_FEAT_FID_RESV_MASK ),
6749+ VAL_BYTE ("resv_persist" , NVME_FEAT_FID_RESV_PERSIST ),
6750+ VAL_BYTE ("write_protect" , NVME_FEAT_FID_WRITE_PROTECT ),
6751+ VAL_BYTE ("bp_write_protect" , NVME_FEAT_FID_BP_WRITE_PROTECT ),
6752+ VAL_END ()
6753+ };
6754+
66596755 NVME_ARGS (opts ,
66606756 OPT_UINT ("namespace-id" , 'n' , & cfg .namespace_id , namespace_desired ),
6661- OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id ),
6757+ OPT_BYTE ("feature-id" , 'f' , & cfg .feature_id , feature_id , feature_name ),
66626758 OPT_SUFFIX ("value" , 'V' , & cfg .value , value ),
66636759 OPT_UINT ("cdw12" , 'c' , & cfg .cdw12 , cdw12 ),
66646760 OPT_BYTE ("uuid-index" , 'U' , & cfg .uuid_index , uuid_index_specify ),
0 commit comments