[PATCH 1/1 nvmecli] fabrics: add new --skip-cid-gen flag to connect cmd
From: Max Gurtovoy <mgurtovoy@nvidia.com>
Date: 2021-11-08 14:47:34
Subsystem:
documentation, the rest · Maintainers:
Jonathan Corbet, Linus Torvalds
Setting this flag will enable NVME_QUIRK_SKIP_CID_GEN quirk and will actually add the ability to ignore the command id generation for other transport alongside PCI transport that is possible today. Signed-off-by: Max Gurtovoy <mgurtovoy@nvidia.com> --- Documentation/nvme-connect.html | 15 ++++++++++++++- fabrics.c | 10 ++++++---- 2 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/Documentation/nvme-connect.html b/Documentation/nvme-connect.html
index 8e25db9..d0a53d6 100644
--- a/Documentation/nvme-connect.html
+++ b/Documentation/nvme-connect.html@@ -767,7 +767,8 @@ nvme-connect(1) Manual Page [--duplicate-connect | -D] [--disable-sqflow | -d] [--hdr-digest | -g] - [--data-digest | -G]</pre> + [--data-digest | -G] + [--skip-cid-gen | -p]</pre> <div class="attribution"> </div></div> </div>
@@ -1028,6 +1029,18 @@ cellspacing="0" cellpadding="4"> Generates/verifies data digest (TCP). </p> </dd> +<dt class="hdlist1"> +-p +</dt> +<dt class="hdlist1"> +--skip-cid-gen +</dt> +<dd> +<p> + Skip command id generation control that was added to protect against buggy + fabric controllers. +</p> +</dd> </dl></div> </div> </div>
diff --git a/fabrics.c b/fabrics.c
index 012bcb8..02a4108 100644
--- a/fabrics.c
+++ b/fabrics.c@@ -72,6 +72,7 @@ static const char *nvmf_dup_connect = "allow duplicate connections between same static const char *nvmf_disable_sqflow = "disable controller sq flow control (default false)"; static const char *nvmf_hdr_digest = "enable transport protocol header digest (TCP transport)"; static const char *nvmf_data_digest = "enable transport protocol data digest (TCP transport)"; +static const char *nvmf_skip_cid_gen = "skip command id generation control (default false)"; static const char *nvmf_config_file = "Use specified JSON configuration file or 'none' to disable"; #define NVMF_OPTS(c) \
@@ -93,7 +94,8 @@ static const char *nvmf_config_file = "Use specified JSON configuration file or OPT_FLAG("duplicate-connect", 'D', &c.duplicate_connect, nvmf_dup_connect), \ OPT_FLAG("disable-sqflow", 'd', &c.disable_sqflow, nvmf_disable_sqflow), \ OPT_FLAG("hdr-digest", 'g', &c.hdr_digest, nvmf_hdr_digest), \ - OPT_FLAG("data-digest", 'G', &c.data_digest, nvmf_data_digest) \ + OPT_FLAG("data-digest", 'G', &c.data_digest, nvmf_data_digest), \ + OPT_FLAG("skip-cid-gen", 'p', &c.skip_cid_gen, nvmf_skip_cid_gen) \ static void space_strip_len(int max, char *str)
@@ -363,7 +365,7 @@ static int discover_from_conf_file(nvme_host_t h, const char *desc, if (!c) goto next; errno = 0; - ret = nvmf_add_ctrl(h, c, &cfg, false); + ret = nvmf_add_ctrl(h, c, &cfg, false, false); if (!ret) { __discover(c, &cfg, raw, connect, persistent, flags);
@@ -513,7 +515,7 @@ int nvmf_discover(const char *desc, int argc, char **argv, bool connect) ret = errno; goto out_free; } - ret = nvmf_add_ctrl(h, c, &cfg, false); + ret = nvmf_add_ctrl(h, c, &cfg, false, false); if (ret) { nvme_msg(LOG_ERR, "failed to add controller, error %d\n", errno);
@@ -626,7 +628,7 @@ int nvmf_connect(const char *desc, int argc, char **argv) } errno = 0; - ret = nvmf_add_ctrl(h, c, &cfg, cfg.disable_sqflow); + ret = nvmf_add_ctrl(h, c, &cfg, cfg.disable_sqflow, cfg.skip_cid_gen); if (ret) nvme_msg(LOG_ERR, "no controller found\n"); out_free:
--
2.18.1