diff --git a/drivers/md/dm.c b/drivers/md/dm.c index 27cd234cf6822686588440ba8727d1b7015e9907..9e8c1edd89dd3386a96827a43c1dd8c5262bca79 100644 --- a/drivers/md/dm.c +++ b/drivers/md/dm.c @@ -921,6 +921,16 @@ static struct mapped_device *dm_find_md(dev_t dev) 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; +} + void *dm_get_mdptr(dev_t dev) { struct mapped_device *md; diff --git a/drivers/md/dm.h b/drivers/md/dm.h index e38c3fc1a1db451aec5b3172b27b22c7042c384c..ab078a249396d4ab72f21a5cec43fc2d48c0b7ea 100644 --- a/drivers/md/dm.h +++ b/drivers/md/dm.h @@ -58,6 +58,7 @@ int dm_create(struct mapped_device **md); int dm_create_with_minor(unsigned int minor, struct mapped_device **md); void dm_set_mdptr(struct mapped_device *md, void *ptr); void *dm_get_mdptr(dev_t dev); +struct mapped_device *dm_get_md(dev_t dev); /* * Reference counting for md.