Always clear m->next. --- diff/drivers/md/dm-mpath.c 2005-01-12 19:16:42.000000000 +0000 +++ source/drivers/md/dm-mpath.c 2005-01-12 19:16:51.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 */