Skip to content

Commit fae474d

Browse files
committed
nvme: add get and set feature commands symbolic names
The feature-id parameter can be set the symbolic names also. Signed-off-by: Tokunori Ikegami <[email protected]>
1 parent d16e8d8 commit fae474d

1 file changed

Lines changed: 98 additions & 2 deletions

File tree

nvme.c

Lines changed: 98 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)