From: Alasdair G Kergon <agk@redhat.com>

The multipath destructor must flush its workqueue.  Otherwise items that
reference the destroyed object could remain.

From: "goggin, edward" <egoggin@emc.com>
Signed-off-by: Lars Marowsky-Bree <lmb@suse.de>
Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
---

 drivers/md/dm-mpath.c |    2 ++
 1 files changed, 2 insertions(+)

diff -puN drivers/md/dm-mpath.c~device-mapper-multipath-flush-workqueue-when-destroying drivers/md/dm-mpath.c
--- 25/drivers/md/dm-mpath.c~device-mapper-multipath-flush-workqueue-when-destroying	Fri Jul  8 16:45:28 2005
+++ 25-akpm/drivers/md/dm-mpath.c	Fri Jul  8 16:45:28 2005
@@ -752,6 +752,8 @@ static int multipath_ctr(struct dm_targe
 static void multipath_dtr(struct dm_target *ti)
 {
 	struct multipath *m = (struct multipath *) ti->private;
+
+	flush_workqueue(kmultipathd);
 	free_multipath(m);
 }
 
_