[ofa-general] [PATCH][REPOST] drivers/infiniband/ulp/srpt: Fixtarget data corruption
Vladislav Bolkhovitin
vst at vlnb.net
Mon Jan 14 11:02:18 PST 2008
Vu Pham wrote:
> Vladislav Bolkhovitin wrote:
>
>> Robert Pearson wrote:
>>
>>> Vlad,
>>>
>>> I think we agree. But, when we tried the experiment of running
>>> without the
>>> local memory allocator scst hung when we did large IO operations.
>>> Probably
>>> something simple.
>>
>> Why do you think it scst hung, not something else? Do you have
>> evidences for that? ;) According to Vu, you can't simply switch to
>> SCST memory allocator, because IB hardware has very limited number of
>> available SG entries in commands (few tens), so for large request,
>> where there are too many SG entries, they should be "iomapped" using
>> the corresponding IB facility.
>
> No - you can easily switch to SCST memory by set srpt's module parameter
> mem_element=0. There is limited number of sg entries per IB work request
> (29); however, the current srpt can submit several IB work requests to
> cover large sg entries IO.
What's the point in the internal memory management in the SRPT driver then?
> -vu
>
>>
>>> We can look harder. Next step for us is to sync up with Vu
>>> on a few other changes in the works.
>>>
>>> Bob Pearson
>>>
>>> -----Original Message-----
>>> From: general-bounces at lists.openfabrics.org
>>> [mailto:general-bounces at lists.openfabrics.org] On Behalf Of Vladislav
>>> Bolkhovitin
>>> Sent: Saturday, January 12, 2008 3:51 AM
>>> To: davem at systemfabricworks.com
>>> Cc: vu at mellanox.com; general at lists.openfabrics.org
>>> Subject: Re: [ofa-general] [PATCH][REPOST] drivers/infiniband/ulp/srpt:
>>> Fixtarget data corruption
>>>
>>> davem at systemfabricworks.com wrote:
>>>
>>>> This is an updated version of [PATCH] drivers/infiniband/ulp/srpt: Fix
>>>> target data corruption
>>>>
>>>> It was pointed out to me that the code to round up to a power of 2 was
>>>> not as clean as it should be, plus I extracted two unrelated patches
>>>> and
>>>> submitted them separately.
>>>>
>>>> =====================================================================
>>>>
>>>> Change the local buffer allocator to use a spin-lock protected linked
>>>> list instead of an array of atomic_t used/free variables. The
>>>> atomic_t
>>>> code was open to a multi-thread race between test and set. This has
>>>> been observed with the result that the same data buffer was used for
>>>> more than one SCSI operation, either writing the wrong data to the
>>>> disk
>>>> or sending the wrong data to the initiator.
>>>
>>>
>>>
>>> I, as a main SCST developer and implementor, would suggest to
>>> completely remove internal memory management from the SRPT driver and
>>> use SCST memory management instead. It will provide the following
>>> advantages:
>>>
>>> 1. Simplify SRPT driver and completely remove such kind of bugs.
>>>
>>> 2. Make SRPT target driver compatible with scst_user module, i.e.
>>> will allow to use SRPT target driver with backstorage devices,
>>> implemented in user space. Usual example of such devices is a VTL
>>> (Virtual Tape Library).
>>>
>>> 3. (Most likely, since I'm not too familiar with SRPT drivers
>>> internals, but for me it looks like so) Allow SRPT driver to reliably
>>> work with many outstanding commands with big data transfer sizes (>=1MB)
>>>
>>> 4. Might improve performance by caching and reusing already allocated
>>> and "iomaped" to Infiniband hardware SG vectors. Vu knows the
>>> details, we discussed them with him. It will require some minor SCST
>>> modifications (extending its interface with target drivers), but I'm
>>> willing to make them if somebody ask for it.
>>>
>>> Vlad
>>> _______________________________________________
>>> general mailing list
>>> general at lists.openfabrics.org
>>> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
>>>
>>> To unsubscribe, please visit
>>> http://openib.org/mailman/listinfo/openib-general
>>>
>>>
>>
>
>
More information about the general
mailing list