scsi: target: tcm_fc: Convert to new submission API
authorMike Christie <michael.christie@oracle.com>
Sat, 27 Feb 2021 16:59:54 +0000 (10:59 -0600)
committerMartin K. Petersen <martin.petersen@oracle.com>
Thu, 4 Mar 2021 22:37:01 +0000 (17:37 -0500)
target_submit_cmd() is now only for simple drivers that do their own sync
during shutdown and do not use target_stop_session().

tcm_fc uses target_stop_session() to sync session shutdown with LIO core,
so we use target_init_cmd(), target_submit_prep(), target_submit(), because
target_init_cmd() will now detect the target_stop_session() call and return
an error.

Link: https://lore.kernel.org/r/20210227170006.5077-14-michael.christie@oracle.com
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Mike Christie <michael.christie@oracle.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/target/tcm_fc/tfc_cmd.c

index 768f250..1376501 100644 (file)
@@ -543,16 +543,22 @@ static void ft_send_work(struct work_struct *work)
 
        fc_seq_set_resp(cmd->seq, ft_recv_seq, cmd);
        cmd->se_cmd.tag = fc_seq_exch(cmd->seq)->rxid;
+
        /*
         * Use a single se_cmd->cmd_kref as we expect to release se_cmd
         * directly from ft_check_stop_free callback in response path.
         */
-       if (target_submit_cmd(&cmd->se_cmd, cmd->sess->se_sess, fcp->fc_cdb,
-                             &cmd->ft_sense_buffer[0], scsilun_to_int(&fcp->fc_lun),
-                             ntohl(fcp->fc_dl), task_attr, data_dir,
-                             TARGET_SCF_ACK_KREF))
+       if (target_init_cmd(&cmd->se_cmd, cmd->sess->se_sess,
+                           &cmd->ft_sense_buffer[0],
+                           scsilun_to_int(&fcp->fc_lun), ntohl(fcp->fc_dl),
+                           task_attr, data_dir, TARGET_SCF_ACK_KREF))
                goto err;
 
+       if (target_submit_prep(&cmd->se_cmd, fcp->fc_cdb, NULL, 0, NULL, 0,
+                              NULL, 0))
+               return;
+
+       target_submit(&cmd->se_cmd);
        pr_debug("r_ctl %x target_submit_cmd %p\n", fh->fh_r_ctl, cmd);
        return;