{
        struct se_cmd *se_cmd = &pending_req->se_cmd;
        struct se_session *sess = pending_req->v2p->tpg->tpg_nexus->tvn_se_sess;
-       int rc;
 
        scsiback_get(pending_req->info);
        se_cmd->tag = pending_req->rqid;
-       rc = target_submit_cmd_map_sgls(se_cmd, sess, pending_req->cmnd,
-                       pending_req->sense_buffer, pending_req->v2p->lun,
-                       pending_req->data_len, 0,
-                       pending_req->sc_data_direction, TARGET_SCF_ACK_KREF,
-                       pending_req->sgl, pending_req->n_sg,
-                       NULL, 0, NULL, 0);
-       if (rc < 0) {
-               transport_send_check_condition_and_sense(se_cmd,
-                               TCM_LOGICAL_UNIT_COMMUNICATION_FAILURE, 0);
-               transport_generic_free_cmd(se_cmd, 0);
-       }
+       target_init_cmd(se_cmd, sess, pending_req->sense_buffer,
+                       pending_req->v2p->lun, pending_req->data_len, 0,
+                       pending_req->sc_data_direction, TARGET_SCF_ACK_KREF);
+
+       if (target_submit_prep(se_cmd, pending_req->cmnd, pending_req->sgl,
+                              pending_req->n_sg, NULL, 0, NULL, 0))
+               return;
+
+       target_submit(se_cmd);
 }
 
 static int scsiback_gnttab_data_map_batch(struct gnttab_map_grant_ref *map,