]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - drivers/cdrom/gdrom.c
[PATCH] switch cdrom_{open,release,ioctl} to sane APIs
[linux-2.6-omap-h63xx.git] / drivers / cdrom / gdrom.c
index 1231d95aa695b2e070964fa0014fea76af756838..0959edf2afdbae939bd0df1e99d3ffe4681bc2ea 100644 (file)
@@ -492,12 +492,12 @@ static struct cdrom_device_ops gdrom_ops = {
 
 static int gdrom_bdops_open(struct inode *inode, struct file *file)
 {
-       return cdrom_open(gd.cd_info, inode, file);
+       return cdrom_open(gd.cd_info, inode->i_bdev, file->f_mode);
 }
 
 static int gdrom_bdops_release(struct inode *inode, struct file *file)
 {
-       return cdrom_release(gd.cd_info, file);
+       return cdrom_release(gd.cd_info, file ? file->f_mode : 0);
 }
 
 static int gdrom_bdops_mediachanged(struct gendisk *disk)
@@ -508,7 +508,8 @@ static int gdrom_bdops_mediachanged(struct gendisk *disk)
 static int gdrom_bdops_ioctl(struct inode *inode, struct file *file,
        unsigned cmd, unsigned long arg)
 {
-       return cdrom_ioctl(file, gd.cd_info, inode, cmd, arg);
+       return cdrom_ioctl(gd.cd_info, inode->i_bdev,
+                       file ? file->f_mode : 0, cmd, arg);
 }
 
 static struct block_device_operations gdrom_bdops = {
@@ -624,14 +625,14 @@ static void gdrom_readdisk_dma(struct work_struct *work)
                ctrl_outb(1, GDROM_DMA_STATUS_REG);
                wait_event_interruptible_timeout(request_queue,
                        gd.transfer == 0, GDROM_DEFAULT_TIMEOUT);
-               err = gd.transfer;
+               err = gd.transfer ? -EIO : 0;
                gd.transfer = 0;
                gd.pending = 0;
                /* now seek to take the request spinlock
                * before handling ending the request */
                spin_lock(&gdrom_lock);
                list_del_init(&req->queuelist);
-               end_dequeued_request(req, 1 - err);
+               __blk_end_request(req, err, blk_rq_bytes(req));
        }
        spin_unlock(&gdrom_lock);
        kfree(read_command);