From: james_p_freyensee@linux.intel.com (J Freyensee)
Subject: [PATCH RFC 2/4] nvme-rdma: fix sqsize/hsqsize/hrqsize per spec
Date: Thu, 11 Aug 2016 09:35:29 -0700 [thread overview]
Message-ID: <1470933329.2796.3.camel@linux.intel.com> (raw)
In-Reply-To: <d3c8c94e-1ad1-afd1-5efc-fc7889f61bf2@grimberg.me>
On Thu, 2016-08-11@10:03 +0300, Sagi Grimberg wrote:
>
> On 11/08/16 07:07, Jay Freyensee wrote:
> >
> > Per NVMe-over-Fabrics 1.0 spec, sqsize is represented as
> > a 0-based value.
> >
> > Also per spec, the RDMA binding values shall be set
> > to sqsize, which makes hsqsize 0-based values.
> >
> > Also per spec, but not very clear, is hrqsize is +1
> > of hsqsize.
> >
> > Thus, the sqsize during NVMf connect() is now:
> >
> > [root at fedora23-fabrics-host1 for-48]# dmesg
> > [??318.720645] nvme_fabrics: nvmf_connect_admin_queue(): sqsize for
> > admin queue: 31
> > [??318.720884] nvme nvme0: creating 16 I/O queues.
> > [??318.810114] nvme_fabrics: nvmf_connect_io_queue(): sqsize for
> > i/o
> > queue: 127
> >
> > Reported-by: Daniel Verkamp <daniel.verkamp at intel.com>
> > Signed-off-by: Jay Freyensee <james_p_freyensee at linux.intel.com>
> > ---
> > ?drivers/nvme/host/rdma.c | 19 ++++++++++++++++---
> > ?1 file changed, 16 insertions(+), 3 deletions(-)
> >
> > diff --git a/drivers/nvme/host/rdma.c b/drivers/nvme/host/rdma.c
> > index 3e3ce2b..8be64f1 100644
> > --- a/drivers/nvme/host/rdma.c
> > +++ b/drivers/nvme/host/rdma.c
> > @@ -1284,8 +1284,21 @@ static int nvme_rdma_route_resolved(struct
> > nvme_rdma_queue *queue)
> >
> > ? priv.recfmt = cpu_to_le16(NVME_RDMA_CM_FMT_1_0);
> > ? priv.qid = cpu_to_le16(nvme_rdma_queue_idx(queue));
> > - priv.hrqsize = cpu_to_le16(queue->queue_size);
> > - priv.hsqsize = cpu_to_le16(queue->queue_size);
> > +
> > + /*
> > + ?* On one end, the fabrics spec is pretty clear that
> > + ?* hsqsize variables shall be set to the value of sqsize,
> > + ?* which is a 0-based number. What is confusing is the
> > value for
> > + ?* hrqsize.??After clarification from NVMe spec committee
> > member,
> > + ?* the minimum value of hrqsize is hsqsize+1.
> > + ?*/
> > + if (priv.qid == 0) {
> > + priv.hsqsize = cpu_to_le16(queue->ctrl-
> > >ctrl.admin_sqsize);
> > + priv.hrqsize = cpu_to_le16(queue->ctrl-
> > >ctrl.admin_sqsize+1);
> > + } else {
> > + priv.hsqsize = cpu_to_le16(queue->ctrl-
> > >ctrl.sqsize);
> > + priv.hrqsize = cpu_to_le16(queue->ctrl-
> > >ctrl.sqsize+1);
> > + }
>
> Huh? (scratch...) using priv.hrqsize = priv.hsqsize+1 is pointless.
It may be pointless, but Dave said that is the current interpretation
of the NVMe-over-Fabrics spec (which I don't really understand either).
>
> We expose to the block layer X and we send to the target X-1 and
> the target does X+1 (looks goofy, but ok). We also size our RDMA
> send/recv according to X so why on earth would we want to tell the
> target we have a recv queue of size X+1
Could be the reason I see kato timeouts then kernel crashing...
next prev parent reply other threads:[~2016-08-11 16:35 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-11 4:07 [PATCH RFC 0/4] sqsize zero-based fixes Jay Freyensee
2016-08-11 4:07 ` [PATCH RFC 1/4] fabrics: define admin sqsize min default, per spec Jay Freyensee
2016-08-11 9:01 ` Sagi Grimberg
2016-08-11 15:08 ` Christoph Hellwig
2016-08-11 16:33 ` J Freyensee
2016-08-11 4:07 ` [PATCH RFC 2/4] nvme-rdma: fix sqsize/hsqsize/hrqsize " Jay Freyensee
2016-08-11 7:03 ` Sagi Grimberg
2016-08-11 16:35 ` J Freyensee [this message]
2016-08-11 15:21 ` Christoph Hellwig
2016-08-11 16:40 ` J Freyensee
2016-08-11 23:24 ` J Freyensee
2016-08-11 4:07 ` [PATCH RFC 3/4] nvmet-rdma: +1 to *queue_size from hsqsize/hrqsize Jay Freyensee
2016-08-11 4:07 ` [PATCH RFC 4/4] nvme-loop: set sqsize to 0-based value, per spec Jay Freyensee
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=1470933329.2796.3.camel@linux.intel.com \
--to=james_p_freyensee@linux.intel.com \
/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.