|
@@ -2571,7 +2571,7 @@ int dm_setup_md_queue(struct mapped_device *md)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static struct mapped_device *dm_find_md(dev_t dev)
|
|
|
+struct mapped_device *dm_get_md(dev_t dev)
|
|
|
{
|
|
|
struct mapped_device *md;
|
|
|
unsigned minor = MINOR(dev);
|
|
@@ -2582,12 +2582,15 @@ static struct mapped_device *dm_find_md(dev_t dev)
|
|
|
spin_lock(&_minor_lock);
|
|
|
|
|
|
md = idr_find(&_minor_idr, minor);
|
|
|
- if (md && (md == MINOR_ALLOCED ||
|
|
|
- (MINOR(disk_devt(dm_disk(md))) != minor) ||
|
|
|
- dm_deleting_md(md) ||
|
|
|
- test_bit(DMF_FREEING, &md->flags))) {
|
|
|
- md = NULL;
|
|
|
- goto out;
|
|
|
+ if (md) {
|
|
|
+ if ((md == MINOR_ALLOCED ||
|
|
|
+ (MINOR(disk_devt(dm_disk(md))) != minor) ||
|
|
|
+ dm_deleting_md(md) ||
|
|
|
+ test_bit(DMF_FREEING, &md->flags))) {
|
|
|
+ md = NULL;
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+ dm_get(md);
|
|
|
}
|
|
|
|
|
|
out:
|
|
@@ -2595,16 +2598,6 @@ out:
|
|
|
|
|
|
return md;
|
|
|
}
|
|
|
-
|
|
|
-struct mapped_device *dm_get_md(dev_t dev)
|
|
|
-{
|
|
|
- struct mapped_device *md = dm_find_md(dev);
|
|
|
-
|
|
|
- if (md)
|
|
|
- dm_get(md);
|
|
|
-
|
|
|
- return md;
|
|
|
-}
|
|
|
EXPORT_SYMBOL_GPL(dm_get_md);
|
|
|
|
|
|
void *dm_get_mdptr(struct mapped_device *md)
|