* [PATCH libnvme v2 0/2] Do not pass disable_sqflow if not supported @ 2023-08-08 7:09 Daniel Wagner 2023-08-08 7:09 ` [PATCH libnvme v2 1/2] fabrics: Read the supported options lazy Daniel Wagner 2023-08-08 7:09 ` [PATCH libnvme v2 2/2] fabrics: Do not pass disable_sqflow if not supported Daniel Wagner 0 siblings, 2 replies; 5+ messages in thread From: Daniel Wagner @ 2023-08-08 7:09 UTC (permalink / raw) To: linux-nvme Cc: linux-kernel, Caleb Sander, Keith Busch, Sagi Grimberg, Daniel Wagner Follow up on the discussion in [1] [1] https://lore.kernel.org/linux-nvme/676b7c2b-7bcf-6138-0229-389ed9efaa92@grimberg.me/ Sagi Grimberg (2): fabrics: Read the supported options lazy fabrics: Do not pass disable_sqflow if not supported src/nvme/fabrics.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) -- 2.41.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH libnvme v2 1/2] fabrics: Read the supported options lazy 2023-08-08 7:09 [PATCH libnvme v2 0/2] Do not pass disable_sqflow if not supported Daniel Wagner @ 2023-08-08 7:09 ` Daniel Wagner 2023-08-08 7:09 ` [PATCH libnvme v2 2/2] fabrics: Do not pass disable_sqflow if not supported Daniel Wagner 1 sibling, 0 replies; 5+ messages in thread From: Daniel Wagner @ 2023-08-08 7:09 UTC (permalink / raw) To: linux-nvme Cc: linux-kernel, Caleb Sander, Keith Busch, Sagi Grimberg, Daniel Wagner From: Sagi Grimberg <sagi@grimberg.me> Read the options in when we need the for the first time. Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Daniel Wagner <dwagner@suse.de> --- src/nvme/fabrics.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/nvme/fabrics.c b/src/nvme/fabrics.c index 800293e2a8e7..9725eeb3cda8 100644 --- a/src/nvme/fabrics.c +++ b/src/nvme/fabrics.c @@ -357,10 +357,18 @@ static int __add_argument(char **argstr, const char *tok, const char *arg) return 0; } +static int __nvmf_supported_options(nvme_root_t r); +#define nvmf_check_option(r, tok) \ +({ \ + if (!(r)->options) \ + __nvmf_supported_options(r); \ + (r)->options->tok; \ +}) + #define add_bool_argument(o, argstr, tok, arg) \ ({ \ int ret; \ - if (r->options->tok) { \ + if (nvmf_check_option(r, tok)) { \ ret = __add_bool_argument(argstr, \ stringify(tok), \ arg); \ @@ -376,7 +384,7 @@ static int __add_argument(char **argstr, const char *tok, const char *arg) #define add_int_argument(o, argstr, tok, arg, allow_zero) \ ({ \ int ret; \ - if (r->options->tok) { \ + if (nvmf_check_option(r, tok)) { \ ret = __add_int_argument(argstr, \ stringify(tok), \ arg, \ @@ -393,7 +401,7 @@ static int __add_argument(char **argstr, const char *tok, const char *arg) #define add_int_or_minus_one_argument(o, argstr, tok, arg) \ ({ \ int ret; \ - if (r->options->tok) { \ + if (nvmf_check_option(r, tok)) { \ ret = __add_int_or_minus_one_argument(argstr, \ stringify(tok), \ arg); \ @@ -409,7 +417,7 @@ static int __add_argument(char **argstr, const char *tok, const char *arg) #define add_argument(r, argstr, tok, arg) \ ({ \ int ret; \ - if (r->options->tok) { \ + if (nvmf_check_option(r, tok)) { \ ret = __add_argument(argstr, \ stringify(tok), \ arg); \ @@ -913,9 +921,6 @@ int nvmf_add_ctrl(nvme_host_t h, nvme_ctrl_t c, free(traddr); } - ret = __nvmf_supported_options(h->r); - if (ret) - return ret; ret = build_options(h, c, &argstr); if (ret) return ret; -- 2.41.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH libnvme v2 2/2] fabrics: Do not pass disable_sqflow if not supported 2023-08-08 7:09 [PATCH libnvme v2 0/2] Do not pass disable_sqflow if not supported Daniel Wagner 2023-08-08 7:09 ` [PATCH libnvme v2 1/2] fabrics: Read the supported options lazy Daniel Wagner @ 2023-08-08 7:09 ` Daniel Wagner 2023-08-08 8:47 ` Sagi Grimberg 1 sibling, 1 reply; 5+ messages in thread From: Daniel Wagner @ 2023-08-08 7:09 UTC (permalink / raw) To: linux-nvme Cc: linux-kernel, Caleb Sander, Keith Busch, Sagi Grimberg, Daniel Wagner From: Sagi Grimberg <sagi@grimberg.me> Only retry a connect attempt with disable_sqflow if the kernel actually supports this option. Reported-by: Sagi Grimberg <sagi@grimberg.me> Signed-off-by: Daniel Wagner <dwagner@suse.de> --- src/nvme/fabrics.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/nvme/fabrics.c b/src/nvme/fabrics.c index 9725eeb3cda8..f0e85d3b766d 100644 --- a/src/nvme/fabrics.c +++ b/src/nvme/fabrics.c @@ -1043,7 +1043,8 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h, if (!ret) return c; - if (errno == EINVAL && c->cfg.disable_sqflow) { + if (errno == EINVAL && c->cfg.disable_sqflow && + nvmf_check_option(h->r, disable_sqflow)) { errno = 0; /* disable_sqflow is unrecognized option on older kernels */ nvme_msg(h->r, LOG_INFO, "failed to connect controller, " -- 2.41.0 ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH libnvme v2 2/2] fabrics: Do not pass disable_sqflow if not supported 2023-08-08 7:09 ` [PATCH libnvme v2 2/2] fabrics: Do not pass disable_sqflow if not supported Daniel Wagner @ 2023-08-08 8:47 ` Sagi Grimberg 2023-08-08 9:09 ` Daniel Wagner 0 siblings, 1 reply; 5+ messages in thread From: Sagi Grimberg @ 2023-08-08 8:47 UTC (permalink / raw) To: Daniel Wagner, linux-nvme; +Cc: linux-kernel, Caleb Sander, Keith Busch > Only retry a connect attempt with disable_sqflow if the kernel > actually supports this option. > > Reported-by: Sagi Grimberg <sagi@grimberg.me> > Signed-off-by: Daniel Wagner <dwagner@suse.de> > --- > src/nvme/fabrics.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/src/nvme/fabrics.c b/src/nvme/fabrics.c > index 9725eeb3cda8..f0e85d3b766d 100644 > --- a/src/nvme/fabrics.c > +++ b/src/nvme/fabrics.c > @@ -1043,7 +1043,8 @@ nvme_ctrl_t nvmf_connect_disc_entry(nvme_host_t h, > if (!ret) > return c; > > - if (errno == EINVAL && c->cfg.disable_sqflow) { > + if (errno == EINVAL && c->cfg.disable_sqflow && > + nvmf_check_option(h->r, disable_sqflow)) { > errno = 0; > /* disable_sqflow is unrecognized option on older kernels */ > nvme_msg(h->r, LOG_INFO, "failed to connect controller, " I think you want to check this before the initial call and avoid the retry altogether. -- - if (e->treq & NVMF_TREQ_DISABLE_SQFLOW) + if (e->treq & NVMF_TREQ_DISABLE_SQFLOW && + nvmf_check_option(h->r, disable_sqflow)) c->cfg.disable_sqflow = true; + else + c->cfg.disable_sqflow = false; if (e->trtype == NVMF_TRTYPE_TCP && (e->treq & NVMF_TREQ_REQUIRED || -- ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH libnvme v2 2/2] fabrics: Do not pass disable_sqflow if not supported 2023-08-08 8:47 ` Sagi Grimberg @ 2023-08-08 9:09 ` Daniel Wagner 0 siblings, 0 replies; 5+ messages in thread From: Daniel Wagner @ 2023-08-08 9:09 UTC (permalink / raw) To: Sagi Grimberg; +Cc: linux-nvme, linux-kernel, Caleb Sander, Keith Busch On Tue, Aug 08, 2023 at 11:47:14AM +0300, Sagi Grimberg wrote: > I think you want to check this before the initial call > and avoid the retry altogether. > -- > - if (e->treq & NVMF_TREQ_DISABLE_SQFLOW) > + if (e->treq & NVMF_TREQ_DISABLE_SQFLOW && > + nvmf_check_option(h->r, disable_sqflow)) > c->cfg.disable_sqflow = true; > + else > + c->cfg.disable_sqflow = false; > > if (e->trtype == NVMF_TRTYPE_TCP && > (e->treq & NVMF_TREQ_REQUIRED || Yep, makes sense. ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2023-08-08 20:48 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2023-08-08 7:09 [PATCH libnvme v2 0/2] Do not pass disable_sqflow if not supported Daniel Wagner 2023-08-08 7:09 ` [PATCH libnvme v2 1/2] fabrics: Read the supported options lazy Daniel Wagner 2023-08-08 7:09 ` [PATCH libnvme v2 2/2] fabrics: Do not pass disable_sqflow if not supported Daniel Wagner 2023-08-08 8:47 ` Sagi Grimberg 2023-08-08 9:09 ` Daniel Wagner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®