msg_h = (struct st_msg_header *)req - 1;
        if (likely(cmd)) {
                msg_h->channel = (u8)cmd->device->channel;
-               msg_h->timeout = cpu_to_le16(cmd->request->timeout/HZ);
+               msg_h->timeout = cpu_to_le16(scsi_cmd_to_rq(cmd)->timeout / HZ);
        }
        addr = hba->dma_handle + hba->req_head * hba->rq_size;
        addr += (hba->ccb[tag].sg_count+4)/11;
 
        cmd->scsi_done = done;
 
-       tag = cmd->request->tag;
+       tag = scsi_cmd_to_rq(cmd)->tag;
 
        if (unlikely(tag >= host->can_queue))
                return SCSI_MLQUEUE_HOST_BUSY;
 {
        struct Scsi_Host *host = cmd->device->host;
        struct st_hba *hba = (struct st_hba *)host->hostdata;
-       u16 tag = cmd->request->tag;
+       u16 tag = scsi_cmd_to_rq(cmd)->tag;
        void __iomem *base;
        u32 data;
        int result = SUCCESS;