|
@@ -32,7 +32,6 @@
|
|
|
#define DM_COOKIE_ENV_VAR_NAME "DM_COOKIE"
|
|
|
#define DM_COOKIE_LENGTH 24
|
|
|
|
|
|
-static DEFINE_MUTEX(dm_mutex);
|
|
|
static const char *_name = DM_NAME;
|
|
|
|
|
|
static unsigned int major = 0;
|
|
@@ -328,7 +327,6 @@ static int dm_blk_open(struct block_device *bdev, fmode_t mode)
|
|
|
{
|
|
|
struct mapped_device *md;
|
|
|
|
|
|
- mutex_lock(&dm_mutex);
|
|
|
spin_lock(&_minor_lock);
|
|
|
|
|
|
md = bdev->bd_disk->private_data;
|
|
@@ -346,7 +344,6 @@ static int dm_blk_open(struct block_device *bdev, fmode_t mode)
|
|
|
|
|
|
out:
|
|
|
spin_unlock(&_minor_lock);
|
|
|
- mutex_unlock(&dm_mutex);
|
|
|
|
|
|
return md ? 0 : -ENXIO;
|
|
|
}
|
|
@@ -355,10 +352,12 @@ static int dm_blk_close(struct gendisk *disk, fmode_t mode)
|
|
|
{
|
|
|
struct mapped_device *md = disk->private_data;
|
|
|
|
|
|
- mutex_lock(&dm_mutex);
|
|
|
+ spin_lock(&_minor_lock);
|
|
|
+
|
|
|
atomic_dec(&md->open_count);
|
|
|
dm_put(md);
|
|
|
- mutex_unlock(&dm_mutex);
|
|
|
+
|
|
|
+ spin_unlock(&_minor_lock);
|
|
|
|
|
|
return 0;
|
|
|
}
|