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 */
