(fh->fh_r_ctl == FC_RCTL_DD_DATA_DESC)) {
                        if (se_cmd->se_cmd_flags & SCF_SCSI_DATA_SG_IO_CDB) {
                                /*
 -                               * Map se_mem list to scatterlist, so that
 -                               * DDP can be setup. DDP setup function require
 -                               * scatterlist. se_mem_list is internal to
 -                               * TCM/LIO target
 +                               * cmd may have been broken up into multiple
 +                               * tasks. Link their sgs together so we can
 +                               * operate on them all at once.
                                 */
                                transport_do_task_sg_chain(se_cmd);
 -                              cmd->sg = T_TASK(se_cmd)->t_tasks_sg_chained;
 +                              cmd->sg = se_cmd->t_tasks_sg_chained;
                                cmd->sg_cnt =
 -                                      T_TASK(se_cmd)->t_tasks_sg_chained_no;
 +                                      se_cmd->t_tasks_sg_chained_no;
                        }
-                       if (cmd->sg && lport->tt.ddp_setup(lport, ep->xid,
-                                                   cmd->sg, cmd->sg_cnt))
+                       if (cmd->sg && lport->tt.ddp_target(lport, ep->xid,
+                                                           cmd->sg,
+                                                           cmd->sg_cnt))
                                cmd->was_ddp_setup = 1;
                }
        }
                 * FCP4r01 indicates having a combination of
                 * tm_flags set is invalid.
                 */
 -              FT_TM_DBG("invalid FCP tm_flags %x\n", fcp->fc_tm_flags);
 +              pr_debug("invalid FCP tm_flags %x\n", fcp->fc_tm_flags);
-               ft_send_resp_code(cmd, FCP_CMND_FIELDS_INVALID);
+               ft_send_resp_code_and_free(cmd, FCP_CMND_FIELDS_INVALID);
                return;
        }
  
 -      FT_TM_DBG("alloc tm cmd fn %d\n", tm_func);
 +      pr_debug("alloc tm cmd fn %d\n", tm_func);
        tmr = core_tmr_alloc_req(&cmd->se_cmd, cmd, tm_func);
        if (!tmr) {
 -              FT_TM_DBG("alloc failed\n");
 +              pr_debug("alloc failed\n");
-               ft_send_resp_code(cmd, FCP_TMF_FAILED);
+               ft_send_resp_code_and_free(cmd, FCP_TMF_FAILED);
                return;
        }
        cmd->se_cmd.se_tmr_req = tmr;
        return;
  
  err:
-       ft_send_resp_code(cmd, FCP_CMND_FIELDS_INVALID);
+       ft_send_resp_code_and_free(cmd, FCP_CMND_FIELDS_INVALID);
 -      return;
  }
  
  /*