• Nicholas Bellinger's avatar
    iser-target: Fix queue-full response handling · 555a65f6
    Nicholas Bellinger authored
    This patch addresses two queue-full handling bugs in iser-target.
    
    The first is propagating isert_rdma_rw_ctx_post() return back
    to target-core via isert_put_datain() + isert_get_dataout()
    callbacks, in order to trigger queue-full logic in target-core.
    Note target-core expects -EAGAIN or -ENOMEM error to signal
    RDMA WRITE/READ data-transfer callbacks should be retried,
    after queue-full logic been invoked.
    
    Other types of errors propagated up from RDMA RW API will result
    in target-core generating internal CHECK_CONDITION status,
    avoiding subsequent isert_put_datain() and isert_get_dataout()
    iscsit_transport callback retry attempts.
    
    The second is to use transport_generic_request_failure()
    during T10-PI hw-offload errors in isert_rdma_write_done()
    and isert_rdma_read_done(), so CHECK_CONDITION queue-full
    is handled internally by target-core.
    
    Also add isert_put_response() T10-PI failure case fixme in
    isert_rdma_write_done(), which is currently not internally
    retried or released until session reinstatement.
    Reported-by: default avatarPotnuri Bharat Teja <bharat@chelsio.com>
    Reviewed-by: default avatarPotnuri Bharat Teja <bharat@chelsio.com>
    Tested-by: default avatarPotnuri Bharat Teja <bharat@chelsio.com>
    Cc: Potnuri Bharat Teja <bharat@chelsio.com>
    Reported-by: default avatarSteve Wise <swise@opengridcomputing.com>
    Cc: Steve Wise <swise@opengridcomputing.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
    555a65f6
ib_isert.c 71.6 KB