Commit 269fd2a6 authored by goggin, edward's avatar goggin, edward Committed by Linus Torvalds

[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: default avatarAlasdair G Kergon <agk@redhat.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 0f7347c2
...@@ -230,11 +230,20 @@ static int dm_hash_insert(const char *name, const char *uuid, struct mapped_devi ...@@ -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) static void __hash_remove(struct hash_cell *hc)
{ {
struct dm_table *table;
/* remove from the dev hash */ /* remove from the dev hash */
list_del(&hc->uuid_list); list_del(&hc->uuid_list);
list_del(&hc->name_list); list_del(&hc->name_list);
unregister_with_devfs(hc); unregister_with_devfs(hc);
dm_set_mdptr(hc->md, NULL); 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); dm_put(hc->md);
if (hc->new_map) if (hc->new_map)
dm_table_put(hc->new_map); dm_table_put(hc->new_map);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment