From: Sagi Grimberg <sagi@grimberg.me>
To: Shiraz Saleem <shiraz.saleem@intel.com>,
jgg@nvidia.com, leon@kernel.org, linux-rdma@vger.kernel.org,
target-devel@vger.kernel.org,
Mike Christie <michael.christie@oracle.com>
Cc: Mustafa Ismail <mustafa.ismail@intel.com>,
Mike Marciniszyn <mike.marciniszyn@intel.com>
Subject: Re: [PATCH for-rc] IB/isert: Fix hang in iscsit_wait_for_tag
Date: Mon, 23 Jan 2023 11:19:21 +0200 [thread overview]
Message-ID: <909684d4-f169-792b-7f84-ba18a6e19824@grimberg.me> (raw)
In-Reply-To: <20230119210659.1871-1-shiraz.saleem@intel.com>
> From: Mustafa Ismail <mustafa.ismail@intel.com>
>
> Running fio can occasionally cause a hang when sbitmap_queue_get() fails to
> return a tag in iscsit_allocate_cmd() and iscsit_wait_for_tag() is called
> and will never return from the schedule(). This is because the polling
> thread of the CQ is suspended, and will not poll for a SQ completion which
> would free up a tag.
> Fix this by creating a separate CQ for the SQ so that send completions are
> processed on a separate thread and are not blocked when the RQ CQ is
> stalled.
>
> Fixes: 10e9cbb6b531 ("scsi: target: Convert target drivers to use sbitmap")
Is this the real offending commit? What prevented this from happening
before?
> Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com>
> Signed-off-by: Mustafa Ismail <mustafa.ismail@intel.com>
> Signed-off-by: Shiraz Saleem <shiraz.saleem@intel.com>
> ---
> drivers/infiniband/ulp/isert/ib_isert.c | 33 +++++++++++++++++++++++----------
> drivers/infiniband/ulp/isert/ib_isert.h | 3 ++-
> 2 files changed, 25 insertions(+), 11 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/isert/ib_isert.c b/drivers/infiniband/ulp/isert/ib_isert.c
> index 7540488..f827b91 100644
> --- a/drivers/infiniband/ulp/isert/ib_isert.c
> +++ b/drivers/infiniband/ulp/isert/ib_isert.c
> @@ -109,19 +109,27 @@ static int isert_sg_tablesize_set(const char *val, const struct kernel_param *kp
> struct ib_qp_init_attr attr;
> int ret, factor;
>
> - isert_conn->cq = ib_cq_pool_get(ib_dev, cq_size, -1, IB_POLL_WORKQUEUE);
> - if (IS_ERR(isert_conn->cq)) {
> - isert_err("Unable to allocate cq\n");
> - ret = PTR_ERR(isert_conn->cq);
> + isert_conn->snd_cq = ib_cq_pool_get(ib_dev, cq_size, -1,
> + IB_POLL_WORKQUEUE);
> + if (IS_ERR(isert_conn->snd_cq)) {
> + isert_err("Unable to allocate send cq\n");
> + ret = PTR_ERR(isert_conn->snd_cq);
> return ERR_PTR(ret);
> }
> + isert_conn->rcv_cq = ib_cq_pool_get(ib_dev, cq_size, -1,
> + IB_POLL_WORKQUEUE);
> + if (IS_ERR(isert_conn->rcv_cq)) {
> + isert_err("Unable to allocate receive cq\n");
> + ret = PTR_ERR(isert_conn->rcv_cq);
> + goto create_cq_err;
> + }
Does this have any noticeable performance implications?
Also I wander if there are any other assumptions in the code
for having a single context processing completions...
It'd be much easier if iscsi_allocate_cmd could accept
a timeout to fail...
CCing target-devel and Mike.
next parent reply other threads:[~2023-01-23 9:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20230119210659.1871-1-shiraz.saleem@intel.com>
2023-01-23 9:19 ` Sagi Grimberg [this message]
[not found] ` <SA2PR11MB495347CE35C9ED97CD80C422F3CC9@SA2PR11MB4953.namprd11.prod.outlook.com>
2023-01-30 18:22 ` [PATCH for-rc] IB/isert: Fix hang in iscsit_wait_for_tag Devale, Sindhu
2023-02-13 11:27 ` Sagi Grimberg
2023-03-07 0:09 ` Saleem, Shiraz
2023-03-07 11:47 ` Sagi Grimberg
2023-03-07 17:05 ` Mike Christie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=909684d4-f169-792b-7f84-ba18a6e19824@grimberg.me \
--to=sagi@grimberg.me \
--cc=jgg@nvidia.com \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=michael.christie@oracle.com \
--cc=mike.marciniszyn@intel.com \
--cc=mustafa.ismail@intel.com \
--cc=shiraz.saleem@intel.com \
--cc=target-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).