Pass mpio into map_io()
--- diff/drivers/md/dm-mpath.c	2004-10-29 15:38:04.000000000 +0100
+++ source/drivers/md/dm-mpath.c	2004-10-29 15:38:10.000000000 +0100
@@ -226,13 +226,13 @@
 	return path;
 }
 
-static int map_io(struct multipath *m, struct bio *bio, struct path **chosen)
+static int map_io(struct multipath *m, struct bio *bio, struct mpath_io *mpio)
 {
-	*chosen = get_current_path(m);
-	if (!*chosen)
+	mpio->path = get_current_path(m);
+	if (!mpio->path)
 		return -EIO;
 
-	bio->bi_bdev = (*chosen)->dev->bdev;
+	bio->bi_bdev = mpio->path->dev->bdev;
 	return 0;
 }
 
@@ -537,7 +537,7 @@
 	dm_bio_record(&mpio->details, bio);
 
 	bio->bi_rw |= (1 << BIO_RW_FAILFAST);
-	r = map_io(m, bio, &mpio->path);
+	r = map_io(m, bio, mpio);
 	if (r) {
 		mempool_free(mpio, m->mpio_pool);
 		return r;
@@ -700,7 +700,7 @@
 
 		/* remap */
 		dm_bio_restore(&mpio->details, bio);
-		r = map_io(m, bio, &mpio->path);
+		r = map_io(m, bio, mpio);
 		if (r)
 			/* no paths left */
 			return -EIO;
