lkml.org 
[lkml]   [2020]   [Feb]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.4 108/135] scsi: Revert "target: iscsi: Wait for all commands to finish before freeing a session"
    Date
    From: Bart Van Assche <bvanassche@acm.org>

    commit 807b9515b7d044cf77df31f1af9d842a76ecd5cb upstream.

    Since commit e9d3009cb936 introduced a regression and since the fix for
    that regression was not perfect, revert this commit.

    Link: https://marc.info/?l=target-devel&m=158157054906195
    Cc: Rahul Kundu <rahul.kundu@chelsio.com>
    Cc: Mike Marciniszyn <mike.marciniszyn@intel.com>
    Cc: Sagi Grimberg <sagi@grimberg.me>
    Reported-by: Dakshaja Uppalapati <dakshaja@chelsio.com>
    Fixes: e9d3009cb936 ("scsi: target: iscsi: Wait for all commands to finish before freeing a session")
    Signed-off-by: Bart Van Assche <bvanassche@acm.org>
    Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/target/iscsi/iscsi_target.c | 10 ++--------
    include/scsi/iscsi_proto.h | 1 -
    2 files changed, 2 insertions(+), 9 deletions(-)

    --- a/drivers/target/iscsi/iscsi_target.c
    +++ b/drivers/target/iscsi/iscsi_target.c
    @@ -1165,9 +1165,7 @@ int iscsit_setup_scsi_cmd(struct iscsi_c
    hdr->cmdsn, be32_to_cpu(hdr->data_length), payload_length,
    conn->cid);

    - if (target_get_sess_cmd(&cmd->se_cmd, true) < 0)
    - return iscsit_add_reject_cmd(cmd,
    - ISCSI_REASON_WAITING_FOR_LOGOUT, buf);
    + target_get_sess_cmd(&cmd->se_cmd, true);

    cmd->sense_reason = transport_lookup_cmd_lun(&cmd->se_cmd,
    scsilun_to_int(&hdr->lun));
    @@ -2004,9 +2002,7 @@ iscsit_handle_task_mgt_cmd(struct iscsi_
    conn->sess->se_sess, 0, DMA_NONE,
    TCM_SIMPLE_TAG, cmd->sense_buffer + 2);

    - if (target_get_sess_cmd(&cmd->se_cmd, true) < 0)
    - return iscsit_add_reject_cmd(cmd,
    - ISCSI_REASON_WAITING_FOR_LOGOUT, buf);
    + target_get_sess_cmd(&cmd->se_cmd, true);

    /*
    * TASK_REASSIGN for ERL=2 / connection stays inside of
    @@ -4236,8 +4232,6 @@ int iscsit_close_connection(
    * must wait until they have completed.
    */
    iscsit_check_conn_usage_count(conn);
    - target_sess_cmd_list_set_waiting(sess->se_sess);
    - target_wait_for_sess_cmds(sess->se_sess);

    ahash_request_free(conn->conn_tx_hash);
    if (conn->conn_rx_hash) {
    --- a/include/scsi/iscsi_proto.h
    +++ b/include/scsi/iscsi_proto.h
    @@ -627,7 +627,6 @@ struct iscsi_reject {
    #define ISCSI_REASON_BOOKMARK_INVALID 9
    #define ISCSI_REASON_BOOKMARK_NO_RESOURCES 10
    #define ISCSI_REASON_NEGOTIATION_RESET 11
    -#define ISCSI_REASON_WAITING_FOR_LOGOUT 12

    /* Max. number of Key=Value pairs in a text message */
    #define MAX_KEY_VALUE_PAIRS 8192

    \
     
     \ /
      Last update: 2020-02-27 15:25    [W:4.408 / U:0.072 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site