From: sagi@grimberg.me (Sagi Grimberg)
Subject: [PATCH] nvmet-rdma: Don't use the inline buffer in order to avoid allocation for small reads
Date: Tue, 2 Aug 2016 16:38:58 +0300 [thread overview]
Message-ID: <157675f0-0576-1cc9-1f99-c0944185e3c5@grimberg.me> (raw)
In-Reply-To: <20160802125042.GB13235@lst.de>
>> Under extreme conditions this might cause data corruptions. By doing that
>> we we repost the buffer and then post this buffer for the device to send.
>> If we happen to use shared receive queues the device might write to the
>> buffer before it sends it (there is no ordering between send and recv
>> queues). Without SRQs we probably won't get that if the host doesn't
>> mis-behave and send more than we allowed it, but relying on that is not
>> really a good idea.
>
> Pitty - it seems so wasteful not being able to use these buffers for
> anything that isn't an inline write.
Totally agree, I'm open to smart ideas on this...
> I fully agree on the SRQ case, but I think we should offer it for the non-SRP case.
As I wrote, even in the non-srq case, if the host is sending a single
write over the negotiated queue size, the data can land in the buffer
that is currently being sent (its a rare race condition, but
theoretically possible). The reason is that we repost the inline data
buffer for receive before we post the send request. We used to have
it the other way around (which eliminates the issue) but we then saw
some latency bubbles due to the HW sending rnr-naks to the host in
the lack of a receive buffer (in iWARP the problem was even worse
because there is no flow-control).
Do you think it's OK to risk data corruption if the host is
misbehaving?
next prev parent reply other threads:[~2016-08-02 13:38 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-01 8:36 [PATCH] nvmet-rdma: Don't use the inline buffer in order to avoid allocation for small reads Sagi Grimberg
2016-08-02 12:50 ` Christoph Hellwig
2016-08-02 13:38 ` Sagi Grimberg [this message]
2016-08-02 16:15 ` Jason Gunthorpe
2016-08-03 9:48 ` Sagi Grimberg
2016-08-03 9:49 ` Christoph Hellwig
2016-08-03 10:37 ` Sagi Grimberg
2016-08-04 11:49 ` Christoph Hellwig
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=157675f0-0576-1cc9-1f99-c0944185e3c5@grimberg.me \
--to=sagi@grimberg.me \
/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).