From: Jack Wang <jinpu.wang@ionos.com>
To: linux-rdma@vger.kernel.org
Cc: bvanassche@acm.org, leon@kernel.org, dledford@redhat.com,
jgg@ziepe.ca, haris.iqbal@ionos.com, jinpu.wang@ionos.com,
Gioh Kim <gi-oh.kim@ionos.com>
Subject: [PATCH for-next 05/10] RDMA/rtrs: Fix warning when use poll mode
Date: Fri, 30 Jul 2021 15:18:27 +0200 [thread overview]
Message-ID: <20210730131832.118865-6-jinpu.wang@ionos.com> (raw)
In-Reply-To: <20210730131832.118865-1-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 in case of poll queue, we need to still call
ib_alloc_cq/ib_free_cq, we can't use cq_poll api for poll queue.
Signed-off-by: Jack Wang <jinpu.wang@ionos.com>
Reviewed-by: Gioh Kim <gi-oh.kim@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 b814a6052cf1..5969a74d45a0 100644
--- a/drivers/infiniband/ulp/rtrs/rtrs-srv.c
+++ b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
@@ -1776,6 +1776,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);
+
if (IS_ERR(cq)) {
rtrs_err(con->sess, "Creating completion queue failed, errno: %ld\n",
PTR_ERR(cq));
@@ -283,7 +288,10 @@ int rtrs_cq_qp_create(struct rtrs_sess *sess, struct rtrs_con *con,
err = create_qp(con, sess->dev->ib_pd, max_send_wr, max_recv_wr,
max_send_sge);
if (err) {
- ib_cq_pool_put(con->cq, con->nr_cqe);
+ if (con->cid >= con->sess->irq_con_num)
+ ib_free_cq(con->cq);
+ else
+ ib_cq_pool_put(con->cq, con->nr_cqe);
con->cq = NULL;
return err;
}
@@ -300,7 +308,10 @@ void rtrs_cq_qp_destroy(struct rtrs_con *con)
con->qp = NULL;
}
if (con->cq) {
- ib_cq_pool_put(con->cq, con->nr_cqe);
+ if (con->cid >= con->sess->irq_con_num)
+ ib_free_cq(con->cq);
+ else
+ ib_cq_pool_put(con->cq, con->nr_cqe);
con->cq = NULL;
}
}
--
2.25.1
next prev parent reply other threads:[~2021-07-30 13:18 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-30 13:18 [PATCH for-next 00/10] Misc update for RTRS Jack Wang
2021-07-30 13:18 ` [PATCH for-next 01/10] RDMA/rtrs-clt: During add_path change for_new_clt according to path_num Jack Wang
2021-08-02 6:40 ` Leon Romanovsky
2021-08-02 14:17 ` Haris Iqbal
2021-07-30 13:18 ` [PATCH for-next 02/10] RDMA/rtrs-srv: Prevent sysfs error with path name "ctl" Jack Wang
2021-08-02 6:47 ` Leon Romanovsky
2021-08-02 14:24 ` Haris Iqbal
2021-08-02 16:34 ` Leon Romanovsky
2021-07-30 13:18 ` [PATCH for-next 03/10] RDMA/rtrs: Use sysfs_emit instead of s*printf function for sysfs show Jack Wang
2021-08-02 6:52 ` Leon Romanovsky
2021-08-02 14:18 ` Haris Iqbal
2021-07-30 13:18 ` [PATCH for-next 04/10] RDMA/rtrs: Remove unused functions Jack Wang
2021-08-02 6:53 ` Leon Romanovsky
2021-07-30 13:18 ` Jack Wang [this message]
2021-08-02 7:06 ` [PATCH for-next 05/10] RDMA/rtrs: Fix warning when use poll mode Leon Romanovsky
2021-08-02 14:18 ` Haris Iqbal
2021-07-30 13:18 ` [PATCH for-next 06/10] RDMA/rtrs: Remove len parameter from helper print functions of sysfs Jack Wang
2021-08-02 7:08 ` Leon Romanovsky
2021-08-02 14:34 ` Haris Iqbal
2021-07-30 13:18 ` [PATCH for-next 07/10] RDMA/rtrs: Remove all likely and unlikely Jack Wang
2021-08-02 7:10 ` Leon Romanovsky
2021-07-30 13:18 ` [PATCH for-next 08/10] RDMA/rtrs-clt: Fix counting inflight IO Jack Wang
2021-08-02 7:22 ` Leon Romanovsky
2021-07-30 13:18 ` [PATCH for-next 09/10] RDMA/rtrs: Add support to disable an IB port on the storage side Jack Wang
2021-08-02 7:29 ` Leon Romanovsky
2021-08-02 14:31 ` Haris Iqbal
2021-08-02 16:35 ` Leon Romanovsky
2021-08-02 17:43 ` Haris Iqbal
2021-08-06 1:22 ` Jason Gunthorpe
2021-08-06 10:14 ` Haris Iqbal
2021-07-30 13:18 ` [PATCH for-next 10/10] RDMA/rtrs: remove (void) casting for functions Jack Wang
2021-08-02 7:32 ` Leon Romanovsky
2021-08-02 14:16 ` Haris Iqbal
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=20210730131832.118865-6-jinpu.wang@ionos.com \
--to=jinpu.wang@ionos.com \
--cc=bvanassche@acm.org \
--cc=dledford@redhat.com \
--cc=gi-oh.kim@ionos.com \
--cc=haris.iqbal@ionos.com \
--cc=jgg@ziepe.ca \
--cc=leon@kernel.org \
--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 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).