Always clear m->next.
--- diff/drivers/md/dm-mpath.c	2004-11-10 15:12:42.000000000 +0000
+++ source/drivers/md/dm-mpath.c	2004-11-10 15:12:49.000000000 +0000
@@ -240,9 +240,11 @@
 		goto failed;
 
 	/* Were we instructed to switch PG? */
-	if (m->next_pg && !__choose_path_in_pg(m, m->next_pg)) {
+	if (m->next_pg) {
+		pg = m->next_pg;
 		m->next_pg = NULL;
-		return;
+		if (!__choose_path_in_pg(m, pg))
+			return;
 	}
 
 	/* Don't change PG until it has no remaining paths */
