__u32 namespace_id;
__u32 data_len;
__u32 metadata_len;
- __u32 timeout;
__u32 cdw2;
__u32 cdw3;
__u32 cdw10;
struct nvme_config {
char *output_format;
int verbose;
+ __u32 timeout;
};
#define NVME_ARGS(n, ...) \
OPT_INCR("verbose", 'v', &nvme_cfg.verbose, verbose), \
OPT_FMT("output-format", 'o', &nvme_cfg.output_format, output_format), \
##__VA_ARGS__, \
+ /* \
+ * the ordering of the arguments matters, as the argument parser uses \
+ * the first match, thus any command which defines -t shorthand will \
+ * match first. \
+ */ \
+ OPT_UINT("timeout", 't', &nvme_cfg.timeout, timeout), \
OPT_END() \
}
struct config {
__u32 namespace_id;
- __u32 timeout;
};
struct config cfg = {
.namespace_id = 0,
- .timeout = 120000,
};
+ nvme_cfg.timeout = 120000;
+
NVME_ARGS(opts,
- OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id),
- OPT_UINT("timeout", 't', &cfg.timeout, timeout));
+ OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id));
err = parse_and_open(&dev, argc, argv, desc, opts);
if (err)
__u16 nvmsetid;
__u16 endgid;
__u64 bs;
- __u32 timeout;
__u8 csi;
__u64 lbstm;
__u16 nphndls;
.nvmsetid = 0,
.endgid = 0,
.bs = 0x00,
- .timeout = 120000,
.csi = 0,
.lbstm = 0,
.nphndls = 0,
.phndls = "",
};
+ nvme_cfg.timeout = 120000;
+
NVME_ARGS(opts,
OPT_SUFFIX("nsze", 's', &cfg.nsze, nsze),
OPT_SUFFIX("ncap", 'c', &cfg.ncap, ncap),
OPT_UINT("nvmset-id", 'i', &cfg.nvmsetid, nvmsetid),
OPT_UINT("endg-id", 'e', &cfg.endgid, endgid),
OPT_SUFFIX("block-size", 'b', &cfg.bs, bs),
- OPT_UINT("timeout", 't', &cfg.timeout, timeout),
OPT_BYTE("csi", 'y', &cfg.csi, csi),
OPT_SUFFIX("lbstm", 'l', &cfg.lbstm, lbstm),
OPT_SHRT("nphndls", 'n', &cfg.nphndls, nphndls),
for (i = 0; i < num_phandle; i++)
data->phndl[i] = cpu_to_le16(phndl[i]);
- err = nvme_cli_ns_mgmt_create(dev, data, &nsid, cfg.timeout, cfg.csi);
+ err = nvme_cli_ns_mgmt_create(dev, data, &nsid, nvme_cfg.timeout, cfg.csi);
if (!err)
printf("%s: Success, created nsid:%d\n", cmd->name, nsid);
else if (err > 0)
struct config {
__u32 namespace_id;
- __u32 timeout;
__u8 lbaf;
__u8 ses;
__u8 pi;
struct config cfg = {
.namespace_id = 0,
- .timeout = 600000,
.lbaf = 0xff,
.ses = 0,
.pi = 0,
.bs = 0,
};
+ nvme_cfg.timeout = 600000;
+
NVME_ARGS(opts,
OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_id_desired),
- OPT_UINT("timeout", 't', &cfg.timeout, timeout),
OPT_BYTE("lbaf", 'l', &cfg.lbaf, lbaf),
OPT_BYTE("ses", 's', &cfg.ses, ses),
OPT_BYTE("pi", 'i', &cfg.pi, pi),
.pi = cfg.pi,
.pil = cfg.pil,
.ses = cfg.ses,
- .timeout = cfg.timeout,
+ .timeout = nvme_cfg.timeout,
.result = NULL,
};
err = nvme_cli_format_nvm(dev, &args);
__u32 mndw;
__u8 atype;
__u16 rl;
- __u32 timeout;
};
struct config cfg = {
.mndw = 0,
.atype = 0,
.rl = 0,
- .timeout = 0,
};
NVME_ARGS(opts,
OPT_SUFFIX("start-lba", 's', &cfg.slba, slba),
OPT_UINT("max-dw", 'm', &cfg.mndw, mndw),
OPT_BYTE("action", 'a', &cfg.atype, atype),
- OPT_SHRT("range-len", 'l', &cfg.rl, rl),
- OPT_UINT("timeout", 't', &cfg.timeout, timeout));
+ OPT_SHRT("range-len", 'l', &cfg.rl, rl));
err = parse_and_open(&dev, argc, argv, desc, opts);
if (err)
.namespace_id = 0,
.data_len = 0,
.metadata_len = 0,
- .timeout = 0,
.cdw2 = 0,
.cdw3 = 0,
.cdw10 = 0,
OPT_UINT("namespace-id", 'n', &cfg.namespace_id, namespace_desired),
OPT_UINT("data-len", 'l', &cfg.data_len, data_len),
OPT_UINT("metadata-len", 'm', &cfg.metadata_len, metadata_len),
- OPT_UINT("timeout", 't', &cfg.timeout, timeout),
OPT_UINT("cdw2", '2', &cfg.cdw2, cdw2),
OPT_UINT("cdw3", '3', &cfg.cdw3, cdw3),
OPT_UINT("cdw10", '4', &cfg.cdw10, cdw10),
printf("cdw13 : %08x\n", cfg.cdw13);
printf("cdw14 : %08x\n", cfg.cdw14);
printf("cdw15 : %08x\n", cfg.cdw15);
- printf("timeout_ms : %08x\n", cfg.timeout);
+ printf("timeout_ms : %08x\n", nvme_cfg.timeout);
}
if (cfg.dry_run)
return 0;
cfg.cdw14,
cfg.cdw15, cfg.data_len, data,
cfg.metadata_len,
- mdata, cfg.timeout, &result);
+ mdata, nvme_cfg.timeout, &result);
else
err = nvme_io_passthru(dev_fd(dev), cfg.opcode, cfg.flags,
cfg.rsvd,
cfg.cdw14,
cfg.cdw15, cfg.data_len, data,
cfg.metadata_len,
- mdata, cfg.timeout, &result);
+ mdata, nvme_cfg.timeout, &result);
gettimeofday(&end_time, NULL);
cmd_name = nvme_cmd_to_string(admin, cfg.opcode);