From: Leon Romanovsky <leon@kernel.org>
To: Md Haris Iqbal <haris.iqbal@ionos.com>
Cc: linux-rdma@vger.kernel.org, bvanassche@acm.org,
dledford@redhat.com, jgg@ziepe.ca, jinpu.wang@ionos.com,
Gioh Kim <gi-oh.kim@ionos.com>
Subject: Re: [PATCH v2 for-next 3/6] RDMA/rtrs: Fix warning when use poll mode
Date: Sun, 8 Aug 2021 12:03:17 +0300 [thread overview]
Message-ID: <YQ+d1Ssiw+G5THYe@unreal> (raw)
In-Reply-To: <20210806112112.124313-4-haris.iqbal@ionos.com>
On Fri, Aug 06, 2021 at 01:21:09PM +0200, Md Haris Iqbal wrote:
> From: Jack Wang <jinpu.wang@ionos.com>
>
> when test with poll mode, it will fail and lead to warning below:
> echo "sessname=bla path=gid:fe80::2:c903:4e:d0b3@gid:fe80::2:c903:8:ca17
> device_path=/dev/nullb2 nr_poll_queues=-1" |
> sudo tee /sys/devices/virtual/rnbd-client/ctl/map_device
>
> rnbd_client L597: Mapping device /dev/nullb2 on session bla,
> (access_mode: rw, nr_poll_queues: 8)
> WARNING: CPU: 3 PID: 9886 at drivers/infiniband/core/cq.c:447 ib_cq_pool_get+0x26f/0x2a0 [ib_core]
>
> The problem is, when poll_queues are used, there will be more connections than
> number of cpus; and those extra connections will have ib poll context set to
> IB_POLL_DIRECT, which is not allowed to be used for shared CQs.
>
> So, in case those extra connections when poll queues are used, use
> ib_alloc_cq/ib_free_cq.
>
> Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
> Reviewed-by: Gioh Kim <gi-oh.kim@ionos.com>
> Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
> ---
> drivers/infiniband/ulp/rtrs/rtrs-srv.c | 1 +
> drivers/infiniband/ulp/rtrs/rtrs.c | 17 ++++++++++++++---
> 2 files changed, 15 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs-srv.c b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
> index cd9a4ccf4c28..47775987f91a 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs-srv.c
> +++ b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
> @@ -1768,6 +1768,7 @@ static struct rtrs_srv_sess *__alloc_sess(struct rtrs_srv *srv,
> strscpy(sess->s.sessname, str, sizeof(sess->s.sessname));
>
> sess->s.con_num = con_num;
> + sess->s.irq_con_num = con_num;
> sess->s.recon_cnt = recon_cnt;
> uuid_copy(&sess->s.uuid, uuid);
> spin_lock_init(&sess->state_lock);
> diff --git a/drivers/infiniband/ulp/rtrs/rtrs.c b/drivers/infiniband/ulp/rtrs/rtrs.c
> index ca542e477d38..9bc323490ce3 100644
> --- a/drivers/infiniband/ulp/rtrs/rtrs.c
> +++ b/drivers/infiniband/ulp/rtrs/rtrs.c
> @@ -228,7 +228,12 @@ static int create_cq(struct rtrs_con *con, int cq_vector, int nr_cqe,
> struct rdma_cm_id *cm_id = con->cm_id;
> struct ib_cq *cq;
>
> - cq = ib_cq_pool_get(cm_id->device, nr_cqe, cq_vector, poll_ctx);
> + if (con->cid >= con->sess->irq_con_num)
> + cq = ib_alloc_cq(cm_id->device, con, nr_cqe, cq_vector,
> + poll_ctx);
> + else
> + cq = ib_cq_pool_get(cm_id->device, nr_cqe, cq_vector, poll_ctx);
I see same "if (con->c.cid >= sess->s.irq_con_num)" checks when calling
to rtrs_cq_qp_create() that will take poll_ctx and convey it to create_cq().
Please take a look on nvme_rdma_create_cq() which does the same without
passing poll_ctx.
Thanks
next prev parent reply other threads:[~2021-08-08 9:03 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-06 11:21 [PATCH v2 for-next 0/6] Misc update for RTRS Md Haris Iqbal
2021-08-06 11:21 ` [PATCH v2 for-next 1/6] RDMA/rtrs-clt: During add_path change for_new_clt according to path_num Md Haris Iqbal
2021-08-08 8:34 ` Leon Romanovsky
2021-08-06 11:21 ` [PATCH v2 for-next 2/6] RDMA/rtrs: Remove unused functions Md Haris Iqbal
2021-08-06 11:21 ` [PATCH v2 for-next 3/6] RDMA/rtrs: Fix warning when use poll mode Md Haris Iqbal
2021-08-08 9:03 ` Leon Romanovsky [this message]
[not found] ` <CAD+HZHXM_MvTrNtAm=egQwKFhyHAi5WHDcXhTC0wvSegHbd4sg@mail.gmail.com>
2021-08-08 11:30 ` Leon Romanovsky
2021-08-10 10:54 ` Haris Iqbal
2021-08-06 11:21 ` [PATCH v2 for-next 4/6] RDMA/rtrs: Remove all likely and unlikely Md Haris Iqbal
2021-08-06 11:21 ` [PATCH v2 for-next 5/6] RDMA/rtrs-clt: Fix counting inflight IO Md Haris Iqbal
2021-08-06 11:21 ` [PATCH v2 for-next 6/6] RDMA/rtrs: remove (void) casting for functions Md Haris Iqbal
2021-08-20 18:00 ` [PATCH v2 for-next 0/6] Misc update for RTRS Jason Gunthorpe
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=YQ+d1Ssiw+G5THYe@unreal \
--to=leon@kernel.org \
--cc=bvanassche@acm.org \
--cc=dledford@redhat.com \
--cc=gi-oh.kim@ionos.com \
--cc=haris.iqbal@ionos.com \
--cc=jgg@ziepe.ca \
--cc=jinpu.wang@ionos.com \
--cc=linux-rdma@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.