[PATCH] switch cdrom_{open,release,ioctl} to sane APIs
authorAl Viro <viro@zeniv.linux.org.uk>
Sun, 7 Oct 2007 21:54:28 +0000 (17:54 -0400)
committerAl Viro <viro@zeniv.linux.org.uk>
Tue, 21 Oct 2008 11:47:22 +0000 (07:47 -0400)
... convert to it in callers

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
drivers/block/paride/pcd.c
drivers/cdrom/cdrom.c
drivers/cdrom/gdrom.c
drivers/cdrom/viocd.c
drivers/ide/ide-cd.c
drivers/scsi/sr.c
include/linux/cdrom.h

index b8a994a2b0132b01f7c2ef5ba141c7aae4de7ad0..8bd557e2a65999a693771674f197ef73c8972feb 100644 (file)
@@ -226,20 +226,22 @@ static int pcd_warned;            /* Have we logged a phase warning ? */
 static int pcd_block_open(struct inode *inode, struct file *file)
 {
        struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data;
-       return cdrom_open(&cd->info, inode, file);
+       return cdrom_open(&cd->info, inode->i_bdev, file->f_mode);
 }
 
 static int pcd_block_release(struct inode *inode, struct file *file)
 {
        struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data;
-       return cdrom_release(&cd->info, file);
+       cdrom_release(&cd->info, file ? file->f_mode : 0);
+       return 0;
 }
 
 static int pcd_block_ioctl(struct inode *inode, struct file *file,
                                unsigned cmd, unsigned long arg)
 {
        struct pcd_unit *cd = inode->i_bdev->bd_disk->private_data;
-       return cdrom_ioctl(file, &cd->info, inode, cmd, arg);
+       return cdrom_ioctl(&cd->info, inode->i_bdev,
+                          file ? file->f_mode : 0, cmd, arg);
 }
 
 static int pcd_block_media_changed(struct gendisk *disk)
index e286eb5d1f6afcd82a21477508d9228594288301..d16b02423d6192f43ad8121776ca419f08cc01c2 100644 (file)
@@ -973,7 +973,7 @@ static int cdrom_close_write(struct cdrom_device_info *cdi)
  * is in their own interest: device control becomes a lot easier
  * this way.
  */
-int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip, struct file *fp)
+int cdrom_open(struct cdrom_device_info *cdi, struct block_device *bdev, fmode_t mode)
 {
        int ret;
 
@@ -982,14 +982,14 @@ int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip, struct file *fp)
        /* 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++;
-       if ((fp->f_mode & FMODE_NDELAY) && (cdi->options & CDO_USE_FFLAGS)) {
+       if ((mode & FMODE_NDELAY) && (cdi->options & CDO_USE_FFLAGS)) {
                ret = cdi->ops->open(cdi, 1);
        } else {
                ret = open_for_data(cdi);
                if (ret)
                        goto err;
                cdrom_mmc3_profile(cdi);
-               if (fp->f_mode & FMODE_WRITE) {
+               if (mode & FMODE_WRITE) {
                        ret = -EROFS;
                        if (cdrom_open_write(cdi))
                                goto err_release;
@@ -1007,7 +1007,7 @@ int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip, struct file *fp)
                        cdi->name, cdi->use_count);
        /* Do this on open.  Don't wait for mount, because they might
            not be mounting, but opening with O_NONBLOCK */
-       check_disk_change(ip->i_bdev);
+       check_disk_change(bdev);
        return 0;
 err_release:
        if (CDROM_CAN(CDC_LOCK) && cdi->options & CDO_LOCK) {
@@ -1184,7 +1184,7 @@ static int check_for_audio_disc(struct cdrom_device_info * cdi,
        return 0;
 }
 
-int cdrom_release(struct cdrom_device_info *cdi, struct file *fp)
+void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode)
 {
        struct cdrom_device_ops *cdo = cdi->ops;
        int opened_for_data;
@@ -1205,7 +1205,7 @@ int cdrom_release(struct cdrom_device_info *cdi, struct file *fp)
        }
 
        opened_for_data = !(cdi->options & CDO_USE_FFLAGS) ||
-               !(fp && fp->f_mode & FMODE_NDELAY);
+               !(mode & FMODE_NDELAY);
 
        /*
         * flush cache on last write release
@@ -1219,7 +1219,6 @@ int cdrom_release(struct cdrom_device_info *cdi, struct file *fp)
                    cdi->options & CDO_AUTO_EJECT && CDROM_CAN(CDC_OPEN_TRAY))
                        cdo->tray_move(cdi, 1);
        }
-       return 0;
 }
 
 static int cdrom_read_mech_status(struct cdrom_device_info *cdi, 
@@ -2662,17 +2661,17 @@ static int cdrom_ioctl_audioctl(struct cdrom_device_info *cdi,
  * these days.
  * ATAPI / SCSI specific code now mainly resides in mmc_ioctl().
  */
-int cdrom_ioctl(struct file * file, struct cdrom_device_info *cdi,
-               struct inode *ip, unsigned int cmd, unsigned long arg)
+int cdrom_ioctl(struct cdrom_device_info *cdi, struct block_device *bdev,
+               fmode_t mode, unsigned int cmd, unsigned long arg)
 {
        void __user *argp = (void __user *)arg;
        int ret;
-       struct gendisk *disk = ip->i_bdev->bd_disk;
+       struct gendisk *disk = bdev->bd_disk;
 
        /*
         * Try the generic SCSI command ioctl's first.
         */
-       ret = scsi_cmd_ioctl(disk->queue, disk, file ? file->f_mode : 0, cmd, argp);
+       ret = scsi_cmd_ioctl(disk->queue, disk, mode, cmd, argp);
        if (ret != -ENOTTY)
                return ret;
 
@@ -2696,7 +2695,7 @@ int cdrom_ioctl(struct file * file, struct cdrom_device_info *cdi,
        case CDROM_SELECT_DISC:
                return cdrom_ioctl_select_disc(cdi, arg);
        case CDROMRESET:
-               return cdrom_ioctl_reset(cdi, ip->i_bdev);
+               return cdrom_ioctl_reset(cdi, bdev);
        case CDROM_LOCKDOOR:
                return cdrom_ioctl_lock_door(cdi, arg);
        case CDROM_DEBUG:
index d6ba77a2dd7bbbe6a8329a6485246299226c22fe..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 = {
index 031e0e1a1a3bb4f89f94762b8d6c84e395ee0c06..abc4079c3f419c9a0455008a0ba36816b3bb204e 100644 (file)
@@ -154,20 +154,22 @@ static const struct file_operations proc_viocd_operations = {
 static int viocd_blk_open(struct inode *inode, struct file *file)
 {
        struct disk_info *di = inode->i_bdev->bd_disk->private_data;
-       return cdrom_open(&di->viocd_info, inode, file);
+       return cdrom_open(&di->viocd_info, inode->i_bdev, file->f_mode);
 }
 
 static int viocd_blk_release(struct inode *inode, struct file *file)
 {
        struct disk_info *di = inode->i_bdev->bd_disk->private_data;
-       return cdrom_release(&di->viocd_info, file);
+       cdrom_release(&di->viocd_info, file ? file->f_mode : 0);
+       return 0;
 }
 
 static int viocd_blk_ioctl(struct inode *inode, struct file *file,
                unsigned cmd, unsigned long arg)
 {
        struct disk_info *di = inode->i_bdev->bd_disk->private_data;
-       return cdrom_ioctl(file, &di->viocd_info, inode, cmd, arg);
+       return cdrom_ioctl(&di->viocd_info, inode->i_bdev,
+                          file ? file->f_mode : 0, cmd, arg);
 }
 
 static int viocd_blk_media_changed(struct gendisk *disk)
index cd21b34fe5092b41a250c8bb74c89278215f5a4f..87d90200b16997d4d1448f01cf9859dd28141aa6 100644 (file)
@@ -2099,7 +2099,7 @@ static int idecd_open(struct inode *inode, struct file *file)
        if (!info)
                return -ENXIO;
 
-       rc = cdrom_open(&info->devinfo, inode, file);
+       rc = cdrom_open(&info->devinfo, inode->i_bdev, file->f_mode);
 
        if (rc < 0)
                ide_cd_put(info);
@@ -2112,7 +2112,7 @@ static int idecd_release(struct inode *inode, struct file *file)
        struct gendisk *disk = inode->i_bdev->bd_disk;
        struct cdrom_info *info = ide_drv_g(disk, cdrom_info);
 
-       cdrom_release(&info->devinfo, file);
+       cdrom_release(&info->devinfo, file ? file->f_mode : 0);
 
        ide_cd_put(info);
 
@@ -2176,7 +2176,8 @@ static int idecd_ioctl(struct inode *inode, struct file *file,
 
        err = generic_ide_ioctl(info->drive, bdev, cmd, arg);
        if (err == -EINVAL)
-               err = cdrom_ioctl(file, &info->devinfo, inode, cmd, arg);
+               err = cdrom_ioctl(&info->devinfo, bdev,
+                                 file ? file->f_mode : 0, cmd, arg);
 
        return err;
 }
index 0f17009c99d2f75581ea96b30e3927f89beaa408..b92e2dac9aa9f1f5a9f00c15451189538e34a00c 100644 (file)
@@ -480,7 +480,7 @@ static int sr_block_open(struct inode *inode, struct file *file)
        if(!(cd = scsi_cd_get(disk)))
                return -ENXIO;
 
-       if((ret = cdrom_open(&cd->cdi, inode, file)) != 0)
+       if((ret = cdrom_open(&cd->cdi, inode->i_bdev, file->f_mode)) != 0)
                scsi_cd_put(cd);
 
        return ret;
@@ -488,12 +488,8 @@ static int sr_block_open(struct inode *inode, struct file *file)
 
 static int sr_block_release(struct inode *inode, struct file *file)
 {
-       int ret;
        struct scsi_cd *cd = scsi_cd(inode->i_bdev->bd_disk);
-       ret = cdrom_release(&cd->cdi, file);
-       if(ret)
-               return ret;
-       
+       cdrom_release(&cd->cdi, file ? file->f_mode : 0);
        scsi_cd_put(cd);
 
        return 0;
@@ -517,7 +513,8 @@ static int sr_block_ioctl(struct inode *inode, struct file *file, unsigned cmd,
                return scsi_ioctl(sdev, cmd, argp);
        }
 
-       ret = cdrom_ioctl(file, &cd->cdi, inode, cmd, arg);
+       ret = cdrom_ioctl(&cd->cdi, inode->i_bdev,
+                         file ? file->f_mode : 0, cmd, arg);
        if (ret != -ENOSYS)
                return ret;
 
index 5db265ea60f625a8e281f3ae004a7d90f15f6e00..0b49e08d3cb0d9187649996012ab4503c5c73852 100644 (file)
@@ -987,11 +987,11 @@ struct cdrom_device_ops {
 };
 
 /* the general block_device operations structure: */
-extern int cdrom_open(struct cdrom_device_info *cdi, struct inode *ip,
-                       struct file *fp);
-extern int cdrom_release(struct cdrom_device_info *cdi, struct file *fp);
-extern int cdrom_ioctl(struct file *file, struct cdrom_device_info *cdi,
-               struct inode *ip, unsigned int cmd, unsigned long arg);
+extern int cdrom_open(struct cdrom_device_info *cdi, struct block_device *bdev,
+                       fmode_t mode);
+extern void cdrom_release(struct cdrom_device_info *cdi, fmode_t mode);
+extern int cdrom_ioctl(struct cdrom_device_info *cdi, struct block_device *bdev,
+                      fmode_t mode, unsigned int cmd, unsigned long arg);
 extern int cdrom_media_changed(struct cdrom_device_info *);
 
 extern int register_cdrom(struct cdrom_device_info *cdi);