OSDN Git Service

dm mpath: stop queueing IO when no valid paths exist
authorBenjamin Marzinski <bmarzins@redhat.com>
Wed, 13 Aug 2014 18:53:42 +0000 (13:53 -0500)
committerMike Snitzer <snitzer@redhat.com>
Mon, 6 Oct 2014 00:03:35 +0000 (20:03 -0400)
'queue_io' is set so that IO is queued while paths are being
initialized.  Clear queue_io in __choose_pgpath if there are no valid
paths, since there are obviously no paths that can be initialized.
Otherwise IOs to the device will back up.

Signed-off-by: Benjamin Marzinski <bmarzins@redhat.com>
Signed-off-by: Mike Snitzer <snitzer@redhat.com>
drivers/md/dm-mpath.c

index 833d7e7..7b6b0f0 100644 (file)
@@ -317,8 +317,10 @@ static void __choose_pgpath(struct multipath *m, size_t nr_bytes)
        struct priority_group *pg;
        unsigned bypassed = 1;
 
-       if (!m->nr_valid_paths)
+       if (!m->nr_valid_paths) {
+               m->queue_io = 0;
                goto failed;
+       }
 
        /* Were we instructed to switch PG? */
        if (m->next_pg) {