Re: RFC: Immediate data support for SRP

Bart Van Assche
2015-07-21T00:03:06Z

On 07/19/2015 09:07 AM, Sagi Grimberg wrote:
> On 7/16/2015 6:25 PM, Bart Van Assche wrote:
>> As you probably know for write requests "immediate data" means sending
>> the data in the same packet as the write command instead of sending it
>> as a separate packet. This approach improves performance and reduces
>> latency. Although support for immediate data has not been standardized,
>
> Has anyone tried to get it into the standard? It would seem beneficial
> to just add it. I wouldn't want this to be a Linux compatible only
> feature...

Earlier today I have asked the SanDisk representative in the ANSI T10
committee for his opinion about standardizing support for immediate data
for the SRP protocol. I'm now waiting for his reply.

>> it is easy to add to the SRP initiator and target drivers.
>> Implementations exist in the ib_srp-backport initiator driver and the
>> SCST SRP target driver (see also
>> https://github.com/bvanassche/ib_srp-backport and
>> http://sourceforge.net/p/scst/svn/HEAD/tree/trunk/srpt/). These
>> implementations are available since considerable time, work reliably,
>> are backwards compatible and support zero-copy. Since using immediate
>> data provides a measurable performance improvement I'm wondering whether
>> it would be acceptable to add support for immediate data to the SRP
>> drivers in the Linux kernel tree (ib_srp and ib_srpt) ?
>
> Was this tested against any other array besides SCST and LIO? I know
> people are using SRP against various arrays (Oracle ZFS, RamSan TMS,
> DDN Fusion, NIMBUS, NetApp E5400A...). Their not running upstream
> kernels, but they will catch up at some point...

Not yet, but the existing implementation is backwards compatible. The
SRP initiator sets a flag in the login request to request the target
driver to enable immediate data (SRP_BUF_FORMAT_IMM), and only if the
target driver sends a login response in which the same flag is set
immediate data is enabled. Immediate data could only be enabled when it
should not be enabled if an SRP target sets other flags in its login
reply than those that have been standardized by the ANSI T10 committee.

Bart.