Fix a bug in the multipath_map() logic meant that a new path was being chosen for every io. [Mike Christie] --- diff/drivers/md/dm-mpath.c 2004-01-02 11:03:56.000000000 +0000 +++ source/drivers/md/dm-mpath.c 2004-01-05 10:55:55.000000000 +0000 @@ -598,17 +598,15 @@ /* * Do we need to choose a new path? */ - if (m->current_path && atomic_dec_and_test(&m->count)) - path = m->current_path; - - else { + if (!m->current_path || atomic_dec_and_test(&m->count)) { if (__choose_path(m)) { /* no paths */ spin_unlock_irqrestore(&m->path_lock, flags); return -EIO; - } else - path = m->current_path; + } } + + path = m->current_path; spin_unlock_irqrestore(&m->path_lock, flags); /* map */