Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fe5f9f2c authored by Al Viro's avatar Al Viro
Browse files

[PATCH] switch dm



ioctl() doesn't need BKL here

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
parent a4600f81
Loading
Loading
Loading
Loading
+10 −21
Original line number Diff line number Diff line
@@ -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 @@ static int dm_blk_open(struct inode *inode, struct file *file)
	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
};