summaryrefslogtreecommitdiff
path: root/drivers/md
diff options
context:
space:
mode:
authorgoggin, edward <egoggin@emc.com>2005-09-28 04:45:44 (GMT)
committerLinus Torvalds <torvalds@g5.osdl.org>2005-09-28 14:46:42 (GMT)
commit269fd2a6f84828fd96218d164dace8c413fa5c03 (patch)
tree20496da0d4e5c5a6096a0e690b5b603ace6f7baf /drivers/md
parent0f7347c20c410c300be0db4c132945fd02e54110 (diff)
downloadlinux-fsl-qoriq-269fd2a6f84828fd96218d164dace8c413fa5c03.tar.xz
[PATCH] device-mapper: Trigger an event when a table is deleted
If anything is waiting on a device's table when the device is removed, we must first wake it up so it will release its reference. Otherwise the table's reference count will not drop to zero and the table will not get removed. Signed-Off-By: Alasdair G Kergon <agk@redhat.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/dm-ioctl.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/md/dm-ioctl.c b/drivers/md/dm-ioctl.c
index 200a068..54ec737 100644
--- a/drivers/md/dm-ioctl.c
+++ b/drivers/md/dm-ioctl.c
@@ -230,11 +230,20 @@ static int dm_hash_insert(const char *name, const char *uuid, struct mapped_devi
static void __hash_remove(struct hash_cell *hc)
{
+ struct dm_table *table;
+
/* remove from the dev hash */
list_del(&hc->uuid_list);
list_del(&hc->name_list);
unregister_with_devfs(hc);
dm_set_mdptr(hc->md, NULL);
+
+ table = dm_get_table(hc->md);
+ if (table) {
+ dm_table_event(table);
+ dm_table_put(table);
+ }
+
dm_put(hc->md);
if (hc->new_map)
dm_table_put(hc->new_map);