diff options
author | Benjamin Marzinski <bmarzins@redhat.com> | 2014-08-13 13:53:42 -0500 |
---|---|---|
committer | Mike Snitzer <snitzer@redhat.com> | 2014-10-05 20:03:35 -0400 |
commit | 1f271972478d84dd9e4d6dd82f414d70ed9e78ce (patch) | |
tree | e0dba45e8ca30c73ef29526223f9fd01d2218ab2 /drivers/md | |
parent | 3d8aab2d2cca2dc878e396196d07889129440798 (diff) | |
download | op-kernel-dev-1f271972478d84dd9e4d6dd82f414d70ed9e78ce.zip op-kernel-dev-1f271972478d84dd9e4d6dd82f414d70ed9e78ce.tar.gz |
dm mpath: stop queueing IO when no valid paths exist
'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>
Diffstat (limited to 'drivers/md')
-rw-r--r-- | drivers/md/dm-mpath.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c index 833d7e7..7b6b0f0 100644 --- a/drivers/md/dm-mpath.c +++ b/drivers/md/dm-mpath.c @@ -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) { |