Tidy do_end_io.
--- diff/drivers/md/dm-mpath.c	2005-01-12 19:16:51.000000000 +0000
+++ source/drivers/md/dm-mpath.c	2005-01-12 19:17:02.000000000 +0000
@@ -917,40 +917,39 @@
 	struct hw_handler *hwh = &m->hw_handler;
 	unsigned err_flags = MP_FAIL_PATH;	/* Default behavior */
 
-	if (error) {
-		spin_lock(&m->lock);
-		if (!m->nr_valid_paths) {
-			spin_unlock(&m->lock);
-			return -EIO;
-		}
-		spin_unlock(&m->lock);
+	if (!error)
+		return 0;	/* I/O complete */
 
-		if (hwh->type && hwh->type->err)
-			err_flags = hwh->type->err(hwh, bio);
-
-		if (err_flags & MP_FAIL_PATH)
-			fail_path(mpio->pgpath);
-		
-		if (err_flags & MP_BYPASS_PG)
-			bypass_pg(m, mpio->pgpath->pg, 1);
-
-		if (err_flags & MP_ERROR_IO)
-			return -EIO;
-
-		dm_bio_restore(&mpio->details, bio);
-
-		/* queue for the daemon to resubmit or fail */
-		spin_lock(&m->lock);
-		bio_list_add(&m->queued_ios, bio);
-		m->queue_size++;
-		if (!m->queue_io)
-			schedule_work(&m->process_queued_ios);
+	spin_lock(&m->lock);
+	if (!m->nr_valid_paths) {
 		spin_unlock(&m->lock);
-
-		return 1;	/* io not complete */
+		return -EIO;
 	}
+	spin_unlock(&m->lock);
 
-	return 0;
+	if (hwh->type && hwh->type->err)
+		err_flags = hwh->type->err(hwh, bio);
+
+	if (err_flags & MP_FAIL_PATH)
+		fail_path(mpio->pgpath);
+	
+	if (err_flags & MP_BYPASS_PG)
+		bypass_pg(m, mpio->pgpath->pg, 1);
+
+	if (err_flags & MP_ERROR_IO)
+		return -EIO;
+
+	dm_bio_restore(&mpio->details, bio);
+
+	/* queue for the daemon to resubmit or fail */
+	spin_lock(&m->lock);
+	bio_list_add(&m->queued_ios, bio);
+	m->queue_size++;
+	if (!m->queue_io)
+		schedule_work(&m->process_queued_ios);
+	spin_unlock(&m->lock);
+
+	return 1;	/* io not complete */
 }
 
 static int multipath_end_io(struct dm_target *ti, struct bio *bio,
