public inbox for linux-rdma@vger.kernel.org
 help / color / mirror / Atom feed
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.

  reply	other threads:[~2014-01-19 11:20 UTC|newest]

Thread overview: 42+ 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  4:10                                         ` Or Gerlitz
     [not found]                                         ` <CAG4TOxPLEfyWsUDf4_371u=_=tOgW2v5J4zSz8xx73DfziZOZg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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
     [not found]                                                       ` <CAG4TOxNRkAUH5Jsd67--ydWtUJqE1=pnVSuorgn4vNQiuYx1wg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
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
     [not found]                                                             ` <EE7902D3F51F404C82415C4803930ACD3FDDD50E-DWYeeINJQrxExQ8dmkPuX0M9+F4ksjoh@public.gmane.org>
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-04-01 21:31                                           ` 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
     [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
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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox