Skip to content

Commit 06c8fcc

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 06c8fcc

File tree

1 file changed

+50
-2
lines changed

1 file changed

+50
-2
lines changed

nvme.c

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,54 @@ struct nvme_config nvme_cfg = {
265265

266266
static void *mmap_registers(struct nvme_dev *dev, bool writable);
267267

268+
static OPT_VALS(feature_name) = {
269+
VAL_BYTE("arbitration", NVME_FEAT_FID_ARBITRATION),
270+
VAL_BYTE("power_mgmt", NVME_FEAT_FID_POWER_MGMT),
271+
VAL_BYTE("lba_range", NVME_FEAT_FID_LBA_RANGE),
272+
VAL_BYTE("temp_thresh", NVME_FEAT_FID_TEMP_THRESH),
273+
VAL_BYTE("err_recovery", NVME_FEAT_FID_ERR_RECOVERY),
274+
VAL_BYTE("volatile_wc", NVME_FEAT_FID_VOLATILE_WC),
275+
VAL_BYTE("num_queues", NVME_FEAT_FID_NUM_QUEUES),
276+
VAL_BYTE("irq_coalesce", NVME_FEAT_FID_IRQ_COALESCE),
277+
VAL_BYTE("irq_config", NVME_FEAT_FID_IRQ_CONFIG),
278+
VAL_BYTE("write_atomic", NVME_FEAT_FID_WRITE_ATOMIC),
279+
VAL_BYTE("async_event", NVME_FEAT_FID_ASYNC_EVENT),
280+
VAL_BYTE("auto_pst", NVME_FEAT_FID_AUTO_PST),
281+
VAL_BYTE("host_mem_buf", NVME_FEAT_FID_HOST_MEM_BUF),
282+
VAL_BYTE("timestamp", NVME_FEAT_FID_TIMESTAMP),
283+
VAL_BYTE("kato", NVME_FEAT_FID_KATO),
284+
VAL_BYTE("hctm", NVME_FEAT_FID_HCTM),
285+
VAL_BYTE("nopsc", NVME_FEAT_FID_NOPSC),
286+
VAL_BYTE("rrl", NVME_FEAT_FID_RRL),
287+
VAL_BYTE("plm_config", NVME_FEAT_FID_PLM_CONFIG),
288+
VAL_BYTE("plm_window", NVME_FEAT_FID_PLM_WINDOW),
289+
VAL_BYTE("lba_sts_interval", NVME_FEAT_FID_LBA_STS_INTERVAL),
290+
VAL_BYTE("host_behavior", NVME_FEAT_FID_HOST_BEHAVIOR),
291+
VAL_BYTE("sanitize", NVME_FEAT_FID_SANITIZE),
292+
VAL_BYTE("endurance_evt_cfg", NVME_FEAT_FID_ENDURANCE_EVT_CFG),
293+
VAL_BYTE("iocs_profile", NVME_FEAT_FID_IOCS_PROFILE),
294+
VAL_BYTE("spinup_control", NVME_FEAT_FID_SPINUP_CONTROL),
295+
VAL_BYTE("power_loss_signal", NVME_FEAT_FID_POWER_LOSS_SIGNAL),
296+
VAL_BYTE("perf_characteristics", NVME_FEAT_FID_PERF_CHARACTERISTICS),
297+
VAL_BYTE("fdp", NVME_FEAT_FID_FDP),
298+
VAL_BYTE("fdp_events", NVME_FEAT_FID_FDP_EVENTS),
299+
VAL_BYTE("ns_admin_label", NVME_FEAT_FID_NS_ADMIN_LABEL),
300+
VAL_BYTE("key_value", NVME_FEAT_FID_KEY_VALUE),
301+
VAL_BYTE("ctrl_data_queue", NVME_FEAT_FID_CTRL_DATA_QUEUE),
302+
VAL_BYTE("emb_mgmt_ctrl_addr", NVME_FEAT_FID_EMB_MGMT_CTRL_ADDR),
303+
VAL_BYTE("host_mgmt_agent_addr", NVME_FEAT_FID_HOST_MGMT_AGENT_ADDR),
304+
VAL_BYTE("enh_ctrl_metadata", NVME_FEAT_FID_ENH_CTRL_METADATA),
305+
VAL_BYTE("ctrl_metadata", NVME_FEAT_FID_CTRL_METADATA),
306+
VAL_BYTE("ns_metadata", NVME_FEAT_FID_NS_METADATA),
307+
VAL_BYTE("sw_progress", NVME_FEAT_FID_SW_PROGRESS),
308+
VAL_BYTE("host_id", NVME_FEAT_FID_HOST_ID),
309+
VAL_BYTE("resv_mask", NVME_FEAT_FID_RESV_MASK),
310+
VAL_BYTE("resv_persist", NVME_FEAT_FID_RESV_PERSIST),
311+
VAL_BYTE("write_protect", NVME_FEAT_FID_WRITE_PROTECT),
312+
VAL_BYTE("bp_write_protect", NVME_FEAT_FID_BP_WRITE_PROTECT),
313+
VAL_END()
314+
};
315+
268316
const char *nvme_strerror(int errnum)
269317
{
270318
if (errnum >= ENVME_CONNECT_RESOLVE)
@@ -4874,7 +4922,7 @@ static int get_feature(int argc, char **argv, struct command *cmd,
48744922
};
48754923

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),
@@ -6658,7 +6706,7 @@ static int set_feature(int argc, char **argv, struct command *cmd, struct plugin
66586706

66596707
NVME_ARGS(opts,
66606708
OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
6661-
OPT_BYTE("feature-id", 'f', &cfg.feature_id, feature_id),
6709+
OPT_BYTE("feature-id", 'f', &cfg.feature_id, feature_id, feature_name),
66626710
OPT_SUFFIX("value", 'V', &cfg.value, value),
66636711
OPT_UINT("cdw12", 'c', &cfg.cdw12, cdw12),
66646712
OPT_BYTE("uuid-index", 'U', &cfg.uuid_index, uuid_index_specify),

0 commit comments

Comments
 (0)