[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/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)
|
||||||
/*
|
/*
|
||||||
* 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 @@ out:
|
||||||
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)
|
||||||
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,
|
||||||
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)
|
||||||
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
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue