]> git.proxmox.com Git - mirror_ubuntu-disco-kernel.git/blobdiff - drivers/target/iscsi/iscsi_target.c
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target...
[mirror_ubuntu-disco-kernel.git] / drivers / target / iscsi / iscsi_target.c
index a3fba366cebe457bc1a59a5006ff5290752d667a..4e68b62193ed7781d3c32f4160878809acfc546d 100644 (file)
@@ -29,7 +29,6 @@
 #include <scsi/scsi_tcq.h>
 #include <target/target_core_base.h>
 #include <target/target_core_fabric.h>
-#include <target/target_core_configfs.h>
 
 #include <target/iscsi/iscsi_target_core.h>
 #include "iscsi_target_parameters.h"
@@ -716,7 +715,7 @@ static int iscsit_add_reject_from_cmd(
         */
        if (cmd->se_cmd.se_tfo != NULL) {
                pr_debug("iscsi reject: calling target_put_sess_cmd >>>>>>\n");
-               target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
+               target_put_sess_cmd(&cmd->se_cmd);
        }
        return -1;
 }
@@ -1002,13 +1001,15 @@ int iscsit_setup_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
                hdr->cmdsn, be32_to_cpu(hdr->data_length), payload_length,
                conn->cid);
 
-       target_get_sess_cmd(conn->sess->se_sess, &cmd->se_cmd, true);
+       target_get_sess_cmd(&cmd->se_cmd, true);
 
        cmd->sense_reason = transport_lookup_cmd_lun(&cmd->se_cmd,
                                                     scsilun_to_int(&hdr->lun));
        if (cmd->sense_reason)
                goto attach_cmd;
 
+       /* only used for printks or comparing with ->ref_task_tag */
+       cmd->se_cmd.tag = (__force u32)cmd->init_task_tag;
        cmd->sense_reason = target_setup_cmd_from_cdb(&cmd->se_cmd, hdr->cdb);
        if (cmd->sense_reason) {
                if (cmd->sense_reason == TCM_OUT_OF_RESOURCES) {
@@ -1068,7 +1069,7 @@ int iscsit_process_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
                if (cmdsn_ret == CMDSN_ERROR_CANNOT_RECOVER)
                        return -1;
                else if (cmdsn_ret == CMDSN_LOWER_THAN_EXP) {
-                       target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
+                       target_put_sess_cmd(&cmd->se_cmd);
                        return 0;
                }
        }
@@ -1084,7 +1085,7 @@ int iscsit_process_scsi_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
                if (!cmd->sense_reason)
                        return 0;
 
-               target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
+               target_put_sess_cmd(&cmd->se_cmd);
                return 0;
        }
 
@@ -1115,7 +1116,6 @@ static int
 iscsit_get_immediate_data(struct iscsi_cmd *cmd, struct iscsi_scsi_req *hdr,
                          bool dump_payload)
 {
-       struct iscsi_conn *conn = cmd->conn;
        int cmdsn_ret = 0, immed_ret = IMMEDIATE_DATA_NORMAL_OPERATION;
        /*
         * Special case for Unsupported SAM WRITE Opcodes and ImmediateData=Yes.
@@ -1142,7 +1142,7 @@ after_immediate_data:
 
                        rc = iscsit_dump_data_payload(cmd->conn,
                                                      cmd->first_burst_len, 1);
-                       target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
+                       target_put_sess_cmd(&cmd->se_cmd);
                        return rc;
                } else if (cmd->unsolicited_data)
                        iscsit_set_unsoliticed_dataout(cmd);
@@ -1811,7 +1811,7 @@ iscsit_handle_task_mgt_cmd(struct iscsi_conn *conn, struct iscsi_cmd *cmd,
                                      conn->sess->se_sess, 0, DMA_NONE,
                                      TCM_SIMPLE_TAG, cmd->sense_buffer + 2);
 
-               target_get_sess_cmd(conn->sess->se_sess, &cmd->se_cmd, true);
+               target_get_sess_cmd(&cmd->se_cmd, true);
                sess_ref = true;
 
                switch (function) {
@@ -1953,7 +1953,7 @@ attach:
         */
        if (sess_ref) {
                pr_debug("Handle TMR, using sess_ref=true check\n");
-               target_put_sess_cmd(conn->sess->se_sess, &cmd->se_cmd);
+               target_put_sess_cmd(&cmd->se_cmd);
        }
 
        iscsit_add_cmd_to_response_queue(cmd, conn, cmd->i_state);
@@ -2737,11 +2737,7 @@ static int iscsit_send_datain(struct iscsi_cmd *cmd, struct iscsi_conn *conn)
        cmd->iov_data_count = iov_count;
        cmd->tx_size = tx_size;
 
-       /* sendpage is preferred but can't insert markers */
-       if (!conn->conn_ops->IFMarker)
-               ret = iscsit_fe_sendpage_sg(cmd, conn);
-       else
-               ret = iscsit_send_tx_data(cmd, conn, 0);
+       ret = iscsit_fe_sendpage_sg(cmd, conn);
 
        iscsit_unmap_iovec(cmd);
 
@@ -4073,17 +4069,9 @@ static int iscsi_target_rx_opcode(struct iscsi_conn *conn, unsigned char *buf)
                        " opcode while ERL=0, closing iSCSI connection.\n");
                        return -1;
                }
-               if (!conn->conn_ops->OFMarker) {
-                       pr_err("Unable to recover from unknown"
-                       " opcode while OFMarker=No, closing iSCSI"
-                               " connection.\n");
-                       return -1;
-               }
-               if (iscsit_recover_from_unknown_opcode(conn) < 0) {
-                       pr_err("Unable to recover from unknown"
-                               " opcode, closing iSCSI connection.\n");
-                       return -1;
-               }
+               pr_err("Unable to recover from unknown opcode while OFMarker=No,"
+                      " closing iSCSI connection.\n");
+               ret = -1;
                break;
        }