ide_drive_t *drive = cdi->handle;
        struct cdrom_info *cd = drive->driver_data;
        struct request_sense sense;
-       struct request req;
+       struct request *rq;
        int ret;
 
-       ide_cd_init_rq(drive, &req);
-       req.cmd_type = REQ_TYPE_SPECIAL;
-       req.cmd_flags = REQ_QUIET;
-       ret = ide_do_drive_cmd(drive, &req, ide_wait);
-
+       rq = blk_get_request(drive->queue, READ, __GFP_WAIT);
+       rq->cmd_type = REQ_TYPE_SPECIAL;
+       rq->cmd_flags = REQ_QUIET;
+       ret = blk_execute_rq(drive->queue, cd->disk, rq, 0);
+       blk_put_request(rq);
        /*
         * A reset will unlock the door. If it was previously locked,
         * lock it again.