From: sagi grimberg <sagig@mellanox.com>
To: "Nicholas A. Bellinger" <nab@linux-iscsi.org>,
Roland Dreier <roland@kernel.org>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
Hefty Sean <sean.hefty@intel.com>,
Or Gerlitz <ogerlitz@mellanox.com>,
linux-rdma <linux-rdma@vger.kernel.org>,
"Martin K. Petersen" <martin.petersen@oracle.com>,
target-devel <target-devel@vger.kernel.org>
Subject: Re: linux rdma 3.14 merge plans
Date: Sun, 19 Jan 2014 13:20:17 +0200 [thread overview]
Message-ID: <52DBB4F1.4020400@mellanox.com> (raw)
In-Reply-To: <1390102949.5567.749.camel@haakon3.risingtidesystems.com>
On 1/19/2014 5:42 AM, Nicholas A. Bellinger wrote:
> On Sat, 2014-01-18 at 13:42 -0800, Roland Dreier wrote:
>> On Thu, Jan 16, 2014 at 1:14 PM, Nicholas A. Bellinger
>> <nab@linux-iscsi.org> wrote:
>>> I've reviewed the API from the perspective of what's required for
>>> implementing protection support in iser, and currently don't have any
>>> recommendations or objections beyond what has been proposed by Sagi & Co
>>> in PATCH-v4 code.
>> I guess I'm a little confused about why we need verbs support for this
>> to implement DIF/DIX in iser. Isn't the whole point of protection to
>> have end-to-end checksums, rather than having checksums computed by
>> the transport after there's a chance for corruption?
>>
> So to my knowledge, there are three target side DIX HBA modes of
> operation:
>
> - TARGET PASS: Fabric + Backend support PI
> - TARGET INSERT: Fabric does not support PI, backend supports PI
> - TARGET STRIP: Fabric supports PI, backend does not support PI
>
> The scenario your thinking about above is the 'TARGET INSERT' case,
> where the initiator does not generate PI, but the backend device on the
> target side expects PI, so the target fabric ends up generating PI on
> incoming WRITEs, and verifying + striping PI on outgoing READs.
>
> The scenario for 'TARGET STRIP' is when the initiator generates PI but
> the backend device does not support/process PI, so the target verifies +
> strips PI on incoming WRITESs, and inserts PI on outgoing READs.
>
> Your correct that both of these modes don't provide true end-to-end
> protection, and my understanding is that they are provided as a way to
> accommodate existing fabrics + backend devices where PI is not supported
> all the way through the stack.
>
> The 'TARGET PASS' is the scenario that provides true end-to-end
> guarantees, where for WRITEs PI is generated by the Host OS, verified +
> passed on the initiator side HBA, verified + passed on the target HBA,
> and verified + stored on the device backend. For READs, PI is retrieved
> from the backend device, verified + passed on the target HBA, verified +
> passed on the initiator HBA, and finally verified on the Host OS.
>
> So in the proposed RDMA VERBs changes these three modes of target DIX
> operation are supported. Also it's my understanding (Sagi & Co, please
> correct me), that the proposed changes are implemented to be independent
> of target/initiator mode DIX operation.
Correct. Verbs API allow all supported protection operations without any
peer dependencies.
>
> --nab
>
Thanks Nic, let me elaborate on this,
It is true that T10-PI aims for end-to-end data-integrity, the verbs API
offer HW offload for protection
information processing which is VERY expensive for CPU computation (CRC
verify for each block). T10-PI
is intended to be offloaded, both on the backend devices which supports
this feature and for fabric
transports (such as Qlogic/Emulex FC drivers), Verbs API just adds RDMA
to the game...
T10-PI specifies protection information scheme in a way that over the
wire each protection interval is
followed by 8 bytes of data-integrity (interleaved). In the memory on
the other hand, the data and
protection block-guards may lie in separated buffers (for example that
is the preferred approach in block
and SCSI layers).
Newly introduced REG_SIG_MR work request allows to (fast) register a
"signature" memory key which
incorporates the protection method and pattern used:
1. Where is the data? (data sge)
2. Where is the protection block-guards? (protection sge)
3. What are the signature attributes? (T10-PI method, crc/reftag/apptag
seeds, verify mask, memory pattern, wire pattern)
When doing the actual data-transfer the HCA will enforce T10-PI scheme
(See my cover-letter for a more detailed explanation).
If you take a look in SCSI implementation you will see that SCSI signals
the transport of protection attributes in
scsi_cmnd (prot SG-list, protection type, guard type, protection
operation). Verbs API allows full offload of all
T10-PI operations:
1. INSERT - HCA computes/generates data-integrity block-guards and
writes them according to the specified
pattern (interleaved with the data or in a separated buffer).
2. STRIP (and VERIFY) - HCA verifies incoming data-integrity
block-guards and strip them from the data stream.
3. PASS (and VERIFY) - HCA verifies incoming data-integrity block-guards
and passes them forward according to
the specified pattern (interleaved/separated).
In addition, Verbs API can be easily extended to support other
data-integrity methods (XOR-32, CRC-32, etc...)
so that an application interested in data-integrity has signature verbs
in its tool-box. This is why we use "Signature"
notation and refer to T10-PI as a specific signature method.
Hope this helps,
Sagi.
next prev parent reply other threads:[~2014-01-19 11:20 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-01-07 21:02 linux rdma 3.14 merge plans Or Gerlitz
[not found] ` <CAJZOPZ+4yQ-sT=ks7+eiJjkxOjy5w=BmG16JVcUPiuVsof7qEA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-08 0:51 ` Roland Dreier
[not found] ` <CAG4TOxOMmvFWnkU3DBn33rscEKh2_YfbUCKY=iY8PCVN3+nEsA-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-08 8:52 ` Sagi Grimberg
2014-01-08 9:15 ` Or Gerlitz
2014-01-08 9:37 ` Or Gerlitz
[not found] ` <52CD1C68.4050406-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-01-13 20:32 ` Nicholas A. Bellinger
[not found] ` <1389645171.5567.459.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>
2014-01-15 21:15 ` Nicholas A. Bellinger
[not found] ` <CAG4TOxNa32sLxifPx_f8sW04B_qSh01WWfWjRvam6fjvFLDXSQ@mail.gmail.com>
[not found] ` <CAG4TOxNa32sLxifPx_f8sW04B_qSh01WWfWjRvam6fjvFLDXSQ-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-16 21:14 ` Nicholas A. Bellinger
[not found] ` <1389906852.5567.668.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>
2014-01-16 21:37 ` Greg Kroah-Hartman
[not found] ` <20140116213717.GA24718-U8xfFu+wG4EAvxtiuMwx3w@public.gmane.org>
2014-01-16 21:42 ` Or Gerlitz
[not found] ` <CAJZOPZ+75yOyxrcu4s=dSxv4Ya27UyotbRWLqwC3bbh3wieihg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-16 21:58 ` Greg Kroah-Hartman
2014-01-16 22:06 ` Nicholas A. Bellinger
2014-01-17 22:02 ` Martin K. Petersen
2014-01-18 21:42 ` Roland Dreier
2014-01-19 3:42 ` Nicholas A. Bellinger
2014-01-19 11:20 ` sagi grimberg [this message]
[not found] ` <52DBB4F1.4020400-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-01-20 13:56 ` Or Gerlitz
2014-01-21 22:00 ` Or Gerlitz
[not found] ` <CAJZOPZLuz-Z59agBd0Q9J2=sSG-F+Y8MrJkoGbtiF5M+CnKU1g-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-22 0:43 ` Roland Dreier
2014-01-22 0:43 ` Roland Dreier
2014-01-22 4:10 ` Or Gerlitz
2014-01-22 9:48 ` Sagi Grimberg
[not found] ` <52DF93D3.6030509-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-01-28 21:02 ` Or Gerlitz
2014-01-28 21:02 ` Or Gerlitz
[not found] ` <CAJZOPZLBECYXrpp0GY0uUvyf+XbiLHhXdVukniPXD4AWZObymg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-29 14:13 ` Bart Van Assche
[not found] ` <52E90C81.9040800-HInyCGIudOg@public.gmane.org>
2014-01-29 15:06 ` Sagi Grimberg
[not found] ` <52E91906.70802-LDSdmyG8hGV8YrgS2mwiifqBs+8SCbDb@public.gmane.org>
2014-01-29 16:34 ` Or Gerlitz
2014-01-29 17:56 ` Bart Van Assche
[not found] ` <52E940B2.3070901-HInyCGIudOg@public.gmane.org>
2014-01-30 8:19 ` Or Gerlitz
[not found] ` <52EA0AFA.40100-VPRAkNaXOzVWk0Htik3J/w@public.gmane.org>
2014-01-30 10:07 ` Bart Van Assche
[not found] ` <52EA2465.8010907-HInyCGIudOg@public.gmane.org>
2014-01-30 10:38 ` Or Gerlitz
[not found] ` <CAG4TOxPLEfyWsUDf4_371u=_=tOgW2v5J4zSz8xx73DfziZOZg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-01-22 7:27 ` Nicholas A. Bellinger
2014-01-22 7:27 ` Nicholas A. Bellinger
2014-02-07 0:02 ` Nicholas A. Bellinger
2014-02-07 0:04 ` Roland Dreier
2014-02-25 21:10 ` Or Gerlitz
2014-03-05 9:54 ` Nicholas A. Bellinger
[not found] ` <1394013249.19539.17.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>
2014-03-05 15:18 ` Roland Dreier
2014-03-05 15:18 ` Roland Dreier
[not found] ` <CAG4TOxNRkAUH5Jsd67--ydWtUJqE1=pnVSuorgn4vNQiuYx1wg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-05 15:38 ` Or Gerlitz
2014-03-05 15:38 ` Or Gerlitz
2014-03-05 19:03 ` Nicholas A. Bellinger
[not found] ` <1394046218.20601.12.camel-XoQW25Eq2zviZyQQd+hFbcojREIfoBdhmpATvIKMPHk@public.gmane.org>
2014-03-07 5:07 ` Devesh Sharma
2014-03-07 5:07 ` Devesh Sharma
[not found] ` <EE7902D3F51F404C82415C4803930ACD3FDDD50E-DWYeeINJQrxExQ8dmkPuX0M9+F4ksjoh@public.gmane.org>
2014-03-07 19:31 ` Roland Dreier
2014-03-07 19:31 ` Roland Dreier
[not found] ` <CAL1RGDXRCZafDcFsbiG823VQ7_AVZeZqxY8JEaj=oCYRteAw_A-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-03-10 9:00 ` Devesh Sharma
2014-03-10 9:00 ` Devesh Sharma
2014-04-01 21:31 ` Or Gerlitz
2014-01-20 12:40 ` Bart Van Assche
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=52DBB4F1.4020400@mellanox.com \
--to=sagig@mellanox.com \
--cc=gregkh@linuxfoundation.org \
--cc=linux-rdma@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=nab@linux-iscsi.org \
--cc=ogerlitz@mellanox.com \
--cc=roland@kernel.org \
--cc=sean.hefty@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 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.