Change dm_get_mdptr() to take a struct mapped_device instead of dev_t. Signed-Off-By: Alasdair G Kergon Index: linux-2.6.16-rc1/drivers/md/dm.h =================================================================== --- linux-2.6.16-rc1.orig/drivers/md/dm.h 2006-03-01 21:42:53.000000000 +0000 +++ linux-2.6.16-rc1/drivers/md/dm.h 2006-03-01 21:43:06.000000000 +0000 @@ -47,7 +47,7 @@ struct mapped_device; 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); +void *dm_get_mdptr(struct mapped_device *md); struct mapped_device *dm_get_md(dev_t dev); /* Index: linux-2.6.16-rc1/drivers/md/dm.c =================================================================== --- linux-2.6.16-rc1.orig/drivers/md/dm.c 2006-03-01 21:43:03.000000000 +0000 +++ linux-2.6.16-rc1/drivers/md/dm.c 2006-03-01 21:43:06.000000000 +0000 @@ -976,15 +976,9 @@ struct mapped_device *dm_get_md(dev_t de return md; } -void *dm_get_mdptr(dev_t dev) +void *dm_get_mdptr(struct mapped_device *md) { - struct mapped_device *md; - void *mdptr = NULL; - - md = dm_find_md(dev); - if (md) - mdptr = md->interface_ptr; - return mdptr; + return md->interface_ptr; } void dm_set_mdptr(struct mapped_device *md, void *ptr) Index: linux-2.6.16-rc1/drivers/md/dm-ioctl.c =================================================================== --- linux-2.6.16-rc1.orig/drivers/md/dm-ioctl.c 2006-03-01 21:40:10.000000000 +0000 +++ linux-2.6.16-rc1/drivers/md/dm-ioctl.c 2006-03-01 21:43:06.000000000 +0000 @@ -600,12 +600,22 @@ static int dev_create(struct dm_ioctl *p */ static struct hash_cell *__find_device_hash_cell(struct dm_ioctl *param) { + struct mapped_device *md; + void *mdptr = NULL; + if (*param->uuid) return __get_uuid_cell(param->uuid); - else if (*param->name) + + if (*param->name) return __get_name_cell(param->name); - else - return dm_get_mdptr(huge_decode_dev(param->dev)); + + md = dm_get_md(huge_decode_dev(param->dev)); + if (md) { + mdptr = dm_get_mdptr(md); + dm_put(md); + } + + return mdptr; } static struct mapped_device *find_device(struct dm_ioctl *param)