[PATCH] switch dm
ioctl() doesn't need BKL here Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
This commit is contained in:
parent
a4600f8139
commit
fe5f9f2cd5
|
@ -21,7 +21,6 @@
|
|||
#include <linux/idr.h>
|
||||
#include <linux/hdreg.h>
|
||||
#include <linux/blktrace_api.h>
|
||||
#include <linux/smp_lock.h>
|
||||
|
||||
#define DM_MSG_PREFIX "core"
|
||||
|
||||
|
@ -249,13 +248,13 @@ static void __exit dm_exit(void)
|
|||
/*
|
||||
* 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;
|
||||
|
||||
spin_lock(&_minor_lock);
|
||||
|
||||
md = inode->i_bdev->bd_disk->private_data;
|
||||
md = bdev->bd_disk->private_data;
|
||||
if (!md)
|
||||
goto out;
|
||||
|
||||
|
@ -274,11 +273,9 @@ out:
|
|||
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;
|
||||
|
||||
md = inode->i_bdev->bd_disk->private_data;
|
||||
struct mapped_device *md = disk->private_data;
|
||||
atomic_dec(&md->open_count);
|
||||
dm_put(md);
|
||||
return 0;
|
||||
|
@ -315,21 +312,14 @@ static int dm_blk_getgeo(struct block_device *bdev, struct hd_geometry *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)
|
||||
{
|
||||
struct mapped_device *md;
|
||||
struct dm_table *map;
|
||||
struct mapped_device *md = bdev->bd_disk->private_data;
|
||||
struct dm_table *map = dm_get_table(md);
|
||||
struct dm_target *tgt;
|
||||
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))
|
||||
goto out;
|
||||
|
||||
|
@ -350,7 +340,6 @@ static int dm_blk_ioctl(struct inode *inode, struct file *file,
|
|||
out:
|
||||
dm_table_put(map);
|
||||
|
||||
lock_kernel();
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -1698,9 +1687,9 @@ int dm_noflush_suspending(struct dm_target *ti)
|
|||
EXPORT_SYMBOL_GPL(dm_noflush_suspending);
|
||||
|
||||
static struct block_device_operations dm_blk_dops = {
|
||||
.__open = dm_blk_open,
|
||||
.__release = dm_blk_close,
|
||||
.__ioctl = dm_blk_ioctl,
|
||||
.open = dm_blk_open,
|
||||
.release = dm_blk_close,
|
||||
.ioctl = dm_blk_ioctl,
|
||||
.getgeo = dm_blk_getgeo,
|
||||
.owner = THIS_MODULE
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue