Commit fe5f9f2c authored by Al Viro's avatar Al Viro

[PATCH] switch dm

ioctl() doesn't need BKL here
Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent a4600f81
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include <linux/idr.h> #include <linux/idr.h>
#include <linux/hdreg.h> #include <linux/hdreg.h>
#include <linux/blktrace_api.h> #include <linux/blktrace_api.h>
#include <linux/smp_lock.h>
#define DM_MSG_PREFIX "core" #define DM_MSG_PREFIX "core"
...@@ -249,13 +248,13 @@ static void __exit dm_exit(void) ...@@ -249,13 +248,13 @@ static void __exit dm_exit(void)
/* /*
* Block device functions * Block device functions
*/ */
static int dm_blk_open(struct inode *inode, struct file *file) static int dm_blk_open(struct block_device *bdev, fmode_t mode)
{ {
struct mapped_device *md; struct mapped_device *md;
spin_lock(&_minor_lock); spin_lock(&_minor_lock);
md = inode->i_bdev->bd_disk->private_data; md = bdev->bd_disk->private_data;
if (!md) if (!md)
goto out; goto out;
...@@ -274,11 +273,9 @@ static int dm_blk_open(struct inode *inode, struct file *file) ...@@ -274,11 +273,9 @@ static int dm_blk_open(struct inode *inode, struct file *file)
return md ? 0 : -ENXIO; return md ? 0 : -ENXIO;
} }
static int dm_blk_close(struct inode *inode, struct file *file) static int dm_blk_close(struct gendisk *disk, fmode_t mode)
{ {
struct mapped_device *md; struct mapped_device *md = disk->private_data;
md = inode->i_bdev->bd_disk->private_data;
atomic_dec(&md->open_count); atomic_dec(&md->open_count);
dm_put(md); dm_put(md);
return 0; return 0;
...@@ -315,21 +312,14 @@ static int dm_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo) ...@@ -315,21 +312,14 @@ static int dm_blk_getgeo(struct block_device *bdev, struct hd_geometry *geo)
return dm_get_geometry(md, geo); return dm_get_geometry(md, geo);
} }
static int dm_blk_ioctl(struct inode *inode, struct file *file, static int dm_blk_ioctl(struct block_device *bdev, fmode_t mode,
unsigned int cmd, unsigned long arg) unsigned int cmd, unsigned long arg)
{ {
struct mapped_device *md; struct mapped_device *md = bdev->bd_disk->private_data;
struct dm_table *map; struct dm_table *map = dm_get_table(md);
struct dm_target *tgt; struct dm_target *tgt;
int r = -ENOTTY; int r = -ENOTTY;
/* We don't really need this lock, but we do need 'inode'. */
unlock_kernel();
md = inode->i_bdev->bd_disk->private_data;
map = dm_get_table(md);
if (!map || !dm_table_get_size(map)) if (!map || !dm_table_get_size(map))
goto out; goto out;
...@@ -350,7 +340,6 @@ static int dm_blk_ioctl(struct inode *inode, struct file *file, ...@@ -350,7 +340,6 @@ static int dm_blk_ioctl(struct inode *inode, struct file *file,
out: out:
dm_table_put(map); dm_table_put(map);
lock_kernel();
return r; return r;
} }
...@@ -1698,9 +1687,9 @@ int dm_noflush_suspending(struct dm_target *ti) ...@@ -1698,9 +1687,9 @@ int dm_noflush_suspending(struct dm_target *ti)
EXPORT_SYMBOL_GPL(dm_noflush_suspending); EXPORT_SYMBOL_GPL(dm_noflush_suspending);
static struct block_device_operations dm_blk_dops = { static struct block_device_operations dm_blk_dops = {
.__open = dm_blk_open, .open = dm_blk_open,
.__release = dm_blk_close, .release = dm_blk_close,
.__ioctl = dm_blk_ioctl, .ioctl = dm_blk_ioctl,
.getgeo = dm_blk_getgeo, .getgeo = dm_blk_getgeo,
.owner = THIS_MODULE .owner = THIS_MODULE
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment