struct pcd_unit *cd = bdev->bd_disk->private_data;
        int ret;
 
+       check_disk_change(bdev);
+
        mutex_lock(&pcd_mutex);
        ret = cdrom_open(&cd->info, bdev, mode);
        mutex_unlock(&pcd_mutex);
 
 
        cd_dbg(CD_OPEN, "entering cdrom_open\n");
 
-       /* open is event synchronization point, check events first */
-       check_disk_change(bdev);
-
        /* if this was a O_NONBLOCK open and we should honor the flags,
         * do a quick open without drive/disc integrity checks. */
        cdi->use_count++;
 
 static int gdrom_bdops_open(struct block_device *bdev, fmode_t mode)
 {
        int ret;
+
+       check_disk_change(bdev);
+
        mutex_lock(&gdrom_mutex);
        ret = cdrom_open(gd.cd_info, bdev, mode);
        mutex_unlock(&gdrom_mutex);
 
        struct cdrom_info *info;
        int rc = -ENXIO;
 
+       check_disk_change(bdev);
+
        mutex_lock(&ide_cd_mutex);
        info = ide_cd_get(bdev->bd_disk);
        if (!info)
 
        struct scsi_cd *cd;
        int ret = -ENXIO;
 
+       check_disk_change(bdev);
+
        mutex_lock(&sr_mutex);
        cd = scsi_cd_get(bdev->bd_disk);
        if (cd) {