[stgt] [PATCH] SBC READ6/10/12/16: Add handling of residual overflow/underflow.

FUJITA Tomonori fujita.tomonori at lab.ntt.co.jp
Sun Mar 24 23:05:04 CET 2013


On Sun, 24 Mar 2013 07:57:38 -0700
Ronnie Sahlberg <ronniesahlberg at gmail.com> wrote:

> Version 2:
> Simplify the patch based on Alexanders comments.
> 
> This patch adds support to return overflow/underflow residuals
> for the cases where the transport layer (iSCSI, ...) specifies
> an EDTL that is not matching the SCSI transdfer length.
> 
> Additionally, in case of residual underflow it will also clamp the size of
> returned DATA-IN to the amount of data that was actually read and not the
> EDTL that was requested.
> 
> This is from RFC 3720, 10.4.1 :
>      bit 6 - (U) set for Residual Underflow.  In this case, the Residual
>      Count indicates the number of bytes that were not transferred out
>      of the number of bytes that were expected to be transferred.  For
>      a bidirectional operation, the Residual Count contains the
>      residual for the write operation.
> 
> I have added a specific test for this condition to the testsute in
> libiscsi :
> 
>     ./bin/iscsi-test-cu -t "TestRead10.testRead10Residuals" \
>         iscsi://127.0.0.1/iqn.ronnie.test/1 -V
> 
>     Suite: TestRead10
>       Test: testRead10Residuals ...
>         Test invalid READ10 commands
>         Block size is 512
>         Try reading one block but with iSCSI expected transfer length==0
>         Verify that the target returned SUCCESS
>         Verify residual overflow flag is set
>         Verify we got 512 bytes of residual overflow
>         Try reading one block but with iSCSI expected transfer length==10000
>         Verify that the target returned SUCCESS
>         Verify we got one whole block back from the target
>         Verify residual underflow flag is set
>         Verify we got 9488 bytes of residual underflow
>         Try reading one block but with iSCSI expected transfer length==200
>         Verify that the target returned SUCCESS
>         Verify we got 200 bytes back from the target
>         Verify residual overflow flag is set
>         Verify we got 312 bytes of residual overflow
>         Try reading two blocks but iSCSI expected transfer length==512 (==one bl
>         Verify that the target returned SUCCESS
>         Verify we got one whole block back from the target
>         Verify residual overflow flag is set
>         Verify we got one block of residual overflow
>     passed
> 
>     --Run Summary: Type      Total     Ran  Passed  Failed
>                    suites        1       1     n/a       0
>                    tests         1       1       1       0
>                    asserts      24      24      24       0
> 
> Signed-off-by: Ronnie Sahlberg <ronniesahlberg at gmail.com>
> ---
>  usr/sbc.c |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)

Applied, thanks guys!
--
To unsubscribe from this list: send the line "unsubscribe stgt" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html



More information about the stgt mailing list