[PATCH] beginning of methods conversion

To keep the size of changesets sane we split the switch by drivers;
to keep the damn thing bisectable we do the following:
	1) rename the affected methods, add ones with correct
prototypes, make (few) callers handle both.  That's this changeset.
	2) for each driver convert to new methods.  *ALL* drivers
are converted in this series.
	3) kill the old (renamed) methods.

Note that it _is_ a flagday; all in-tree drivers are converted and by the
end of this series no trace of old methods remain.  The only reason why
we do that this way is to keep the damn thing bisectable and allow per-driver
debugging if anything goes wrong.

New methods:
	open(bdev, mode)
	release(disk, mode)
	ioctl(bdev, mode, cmd, arg)		/* Called without BKL */
	compat_ioctl(bdev, mode, cmd, arg)
	locked_ioctl(bdev, mode, cmd, arg)	/* Called with BKL, legacy */

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
diff --git a/block/ioctl.c b/block/ioctl.c
index 9a26ace..01ff463 100644
--- a/block/ioctl.c
+++ b/block/ioctl.c
@@ -269,17 +269,24 @@
 			struct gendisk *disk, unsigned cmd, unsigned long arg)
 {
 	int ret;
-	if (disk->fops->unlocked_ioctl)
-		return disk->fops->unlocked_ioctl(file, cmd, arg);
+	fmode_t mode = 0;
+	if (file) {
+		mode = file->f_mode;
+		if (file->f_flags & O_NDELAY)
+			mode |= FMODE_NDELAY_NOW;
+	}
 
-	if (disk->fops->ioctl) {
+	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);
+		ret = disk->fops->__ioctl(inode, file, cmd, arg);
 		unlock_kernel();
 		return ret;
 	}
 
-	return -ENOTTY;
+	return __blkdev_driver_ioctl(inode->i_bdev, mode, cmd, arg);
 }
 EXPORT_SYMBOL_GPL(blkdev_driver_ioctl);
 
@@ -295,12 +302,22 @@
 	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->__unlocked_ioctl)
+		return disk->fops->__unlocked_ioctl(&fake_file, cmd, arg);
 
-	if (disk->fops->ioctl) {
+	if (disk->fops->__ioctl) {
 		lock_kernel();
-		ret = disk->fops->ioctl(bdev->bd_inode, &fake_file, cmd, arg);
+		ret = disk->fops->__ioctl(bdev->bd_inode, &fake_file, cmd, arg);
+		unlock_kernel();
+		return ret;
+	}
+
+	if (disk->fops->ioctl)
+		return disk->fops->ioctl(bdev, mode, cmd, arg);
+
+	if (disk->fops->locked_ioctl) {
+		lock_kernel();
+		ret = disk->fops->locked_ioctl(bdev, mode, cmd, arg);
 		unlock_kernel();
 		return ret;
 	}