aboutsummaryrefslogtreecommitdiffstats
path: root/fs/block_dev.c
diff options
context:
space:
mode:
authorAl Viro <viro@zeniv.linux.org.uk>2008-03-02 09:09:22 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2008-10-21 07:47:32 -0400
commitd4430d62fa77208824a37fe6f85ab2831d274769 (patch)
tree5d4d0bca31e63eb208fbebe4f39c912b964c1e4d /fs/block_dev.c
parentbadf8082c33d18b118d3a6f1b32d5ea6b97d3839 (diff)
[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>
Diffstat (limited to 'fs/block_dev.c')
-rw-r--r--fs/block_dev.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/fs/block_dev.c b/fs/block_dev.c
index b9022694e9f7..73b6ce47c861 100644
--- a/fs/block_dev.c
+++ b/fs/block_dev.c
@@ -1033,8 +1033,13 @@ static int do_open(struct block_device *bdev, struct file *file, int for_part)
1033 bdev->bd_contains = bdev; 1033 bdev->bd_contains = bdev;
1034 if (!partno) { 1034 if (!partno) {
1035 struct backing_dev_info *bdi; 1035 struct backing_dev_info *bdi;
1036 if (disk->fops->__open) {
1037 ret = disk->fops->__open(bdev->bd_inode, file);
1038 if (ret)
1039 goto out_first;
1040 }
1036 if (disk->fops->open) { 1041 if (disk->fops->open) {
1037 ret = disk->fops->open(bdev->bd_inode, file); 1042 ret = disk->fops->open(bdev, file->f_mode);
1038 if (ret) 1043 if (ret)
1039 goto out_clear; 1044 goto out_clear;
1040 } 1045 }
@@ -1074,8 +1079,13 @@ static int do_open(struct block_device *bdev, struct file *file, int for_part)
1074 part = NULL; 1079 part = NULL;
1075 disk = NULL; 1080 disk = NULL;
1076 if (bdev->bd_contains == bdev) { 1081 if (bdev->bd_contains == bdev) {
1082 if (bdev->bd_disk->fops->__open) {
1083 ret = bdev->bd_disk->fops->__open(bdev->bd_inode, file);
1084 if (ret)
1085 goto out;
1086 }
1077 if (bdev->bd_disk->fops->open) { 1087 if (bdev->bd_disk->fops->open) {
1078 ret = bdev->bd_disk->fops->open(bdev->bd_inode, file); 1088 ret = bdev->bd_disk->fops->open(bdev, file->f_mode);
1079 if (ret) 1089 if (ret)
1080 goto out_unlock_bdev; 1090 goto out_unlock_bdev;
1081 } 1091 }
@@ -1184,8 +1194,10 @@ static int __blkdev_put(struct block_device *bdev, int for_part)
1184 kill_bdev(bdev); 1194 kill_bdev(bdev);
1185 } 1195 }
1186 if (bdev->bd_contains == bdev) { 1196 if (bdev->bd_contains == bdev) {
1197 if (disk->fops->__release)
1198 ret = disk->fops->__release(bd_inode, NULL);
1187 if (disk->fops->release) 1199 if (disk->fops->release)
1188 ret = disk->fops->release(bd_inode, NULL); 1200 ret = disk->fops->release(disk, 0);
1189 } 1201 }
1190 if (!bdev->bd_openers) { 1202 if (!bdev->bd_openers) {
1191 struct module *owner = disk->fops->owner; 1203 struct module *owner = disk->fops->owner;