}
 
        cmd->cmd_len = req->cmd_len;
-       if (!blk_rq_bytes(req))
-               cmd->sc_data_direction = DMA_NONE;
-       else if (rq_data_dir(req) == WRITE)
-               cmd->sc_data_direction = DMA_TO_DEVICE;
-       else
-               cmd->sc_data_direction = DMA_FROM_DEVICE;
-       
        cmd->transfersize = blk_rq_bytes(req);
        cmd->allowed = req->retries;
        return BLKPREP_OK;
                goto out;
        }
 
+       if (!blk_rq_bytes(req))
+               cmd->sc_data_direction = DMA_NONE;
+       else if (rq_data_dir(req) == WRITE)
+               cmd->sc_data_direction = DMA_TO_DEVICE;
+       else
+               cmd->sc_data_direction = DMA_FROM_DEVICE;
+
        switch (req->cmd_type) {
        case REQ_TYPE_FS:
                ret = scsi_setup_fs_cmnd(sdev, req);
 
                        goto out;
                }
                SCpnt->cmnd[0] = WRITE_6;
-               SCpnt->sc_data_direction = DMA_TO_DEVICE;
 
                if (blk_integrity_rq(rq))
                        sd_dif_prepare(rq, block, sdp->sector_size);
 
        } else if (rq_data_dir(rq) == READ) {
                SCpnt->cmnd[0] = READ_6;
-               SCpnt->sc_data_direction = DMA_FROM_DEVICE;
        } else {
                scmd_printk(KERN_ERR, SCpnt, "Unknown command %llx\n", (unsigned long long) rq->cmd_flags);
                goto out;
 
                if (!cd->device->writeable)
                        goto out;
                SCpnt->cmnd[0] = WRITE_10;
-               SCpnt->sc_data_direction = DMA_TO_DEVICE;
                cd->cdi.media_written = 1;
        } else if (rq_data_dir(rq) == READ) {
                SCpnt->cmnd[0] = READ_10;
-               SCpnt->sc_data_direction = DMA_FROM_DEVICE;
        } else {
                blk_dump_rq_flags(rq, "Unknown sr command");
                goto out;