Clear current path after path reinstatement or bypass flag change. --- diff/drivers/md/dm-mpath.c 2004-10-29 15:37:52.000000000 +0100 +++ source/drivers/md/dm-mpath.c 2004-10-29 15:37:58.000000000 +0100 @@ -605,6 +605,7 @@ spin_lock(&m->lock); m->nr_valid_paths++; + m->current_path = NULL; spin_unlock(&m->lock); out: @@ -641,6 +642,7 @@ { struct priority_group *pg; unsigned pgnum; + unsigned long flags; if (!pgstr || (sscanf(pgstr, "%u", &pgnum) != 1) || !pgnum) goto error; @@ -649,7 +651,11 @@ if (--pgnum) continue; + spin_lock_irqsave(&m->lock, flags); pg->bypass = bypass; + m->current_path = NULL; + spin_unlock_irqrestore(&m->lock, flags); + return 0; }