[PATCH] end of methods switch: remove the old ones
[sfrench/cifs-2.6.git] / block / ioctl.c
index 9a26ace6d04292b26ad4362a4956f7e3fbc01386..0db89f95b15fbb42a86583fd6cd8c9028395c7a3 100644 (file)
@@ -269,17 +269,14 @@ int blkdev_driver_ioctl(struct inode *inode, struct file *file,
                        struct gendisk *disk, unsigned cmd, unsigned long arg)
 {
        int ret;
-       if (disk->fops->unlocked_ioctl)
-               return disk->fops->unlocked_ioctl(file, cmd, arg);
-
-       if (disk->fops->ioctl) {
-               lock_kernel();
-               ret = disk->fops->ioctl(inode, file, cmd, arg);
-               unlock_kernel();
-               return ret;
+       fmode_t mode = 0;
+       if (file) {
+               mode = file->f_mode;
+               if (file->f_flags & O_NDELAY)
+                       mode |= FMODE_NDELAY_NOW;
        }
 
-       return -ENOTTY;
+       return __blkdev_driver_ioctl(inode->i_bdev, mode, cmd, arg);
 }
 EXPORT_SYMBOL_GPL(blkdev_driver_ioctl);
 
@@ -288,19 +285,13 @@ int __blkdev_driver_ioctl(struct block_device *bdev, fmode_t mode,
 {
        struct gendisk *disk = bdev->bd_disk;
        int ret;
-       /* you bet it'll go away by the end of patch series */
-       struct file fake_file = {};
-       struct dentry fake_dentry = {};
-       fake_file.f_mode = mode;
-       fake_file.f_path.dentry = &fake_dentry;
-       fake_dentry.d_inode = bdev->bd_inode;
 
-       if (disk->fops->unlocked_ioctl)
-               return disk->fops->unlocked_ioctl(&fake_file, cmd, arg);
+       if (disk->fops->ioctl)
+               return disk->fops->ioctl(bdev, mode, cmd, arg);
 
-       if (disk->fops->ioctl) {
+       if (disk->fops->locked_ioctl) {
                lock_kernel();
-               ret = disk->fops->ioctl(bdev->bd_inode, &fake_file, cmd, arg);
+               ret = disk->fops->locked_ioctl(bdev, mode, cmd, arg);
                unlock_kernel();
                return ret;
        }