Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

[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
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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);