Fix queue_if_no_path when multiple bios fail together. --- diff/drivers/md/dm-mpath.c 2005-01-12 19:18:50.000000000 +0000 +++ source/drivers/md/dm-mpath.c 2005-01-12 19:19:26.000000000 +0000 @@ -967,8 +967,13 @@ spin_lock(&m->lock); if (!m->nr_valid_paths) { - spin_unlock(&m->lock); - return -EIO; + if (!m->queue_if_no_path) { + spin_unlock(&m->lock); + return -EIO; + } else { + spin_unlock(&m->lock); + goto requeue; + } } spin_unlock(&m->lock); @@ -986,6 +991,7 @@ if (err_flags & MP_ERROR_IO) return -EIO; + requeue: dm_bio_restore(&mpio->details, bio); /* queue for the daemon to resubmit or fail */