struct aha1542_cmd *acmd = scsi_cmd_priv(cmd);
 
        if (cmd->sc_data_direction == DMA_FROM_DEVICE) {
+               struct request *rq = scsi_cmd_to_rq(cmd);
                void *buf = acmd->data_buffer;
                struct req_iterator iter;
                struct bio_vec bv;
 
-               rq_for_each_segment(bv, cmd->request, iter) {
+               rq_for_each_segment(bv, rq, iter) {
                        memcpy_to_page(bv.bv_page, bv.bv_offset, buf,
                                       bv.bv_len);
                        buf += bv.bv_len;
 #endif
 
        if (cmd->sc_data_direction == DMA_TO_DEVICE) {
+               struct request *rq = scsi_cmd_to_rq(cmd);
                void *buf = acmd->data_buffer;
                struct req_iterator iter;
                struct bio_vec bv;
 
-               rq_for_each_segment(bv, cmd->request, iter) {
+               rq_for_each_segment(bv, rq, iter) {
                        memcpy_from_page(buf, bv.bv_page, bv.bv_offset,
                                         bv.bv_len);
                        buf += bv.bv_len;