From 6c05ea19eee8277fe65b180774d315068043ef02 Mon Sep 17 00:00:00 2001 From: Mike Christie Date: Sun, 3 Jun 2012 00:29:45 +0100 Subject: [PATCH] --- yaml --- r: 310423 b: refs/heads/master c: f220fd4efb334a772f9a14b2372175f38d89355e h: refs/heads/master i: 310421: 0be261336f2441522b5419af63148dbf4360fad2 310419: f4cdc5cbbc98df532ba29add0e476853ffe1f3d3 310415: 6938da0bcbc7074ef8dc3a415805999f22029916 v: v3 --- [refs] | 2 +- trunk/drivers/md/dm-mpath.c | 8 ++++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/[refs] b/[refs] index 362af9021061..3f4183a162e3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1fbdd2b3a3cf77f77b0cdf25dd969241ea2c0ce1 +refs/heads/master: f220fd4efb334a772f9a14b2372175f38d89355e diff --git a/trunk/drivers/md/dm-mpath.c b/trunk/drivers/md/dm-mpath.c index c35160786cf4..2469ba68dc2b 100644 --- a/trunk/drivers/md/dm-mpath.c +++ b/trunk/drivers/md/dm-mpath.c @@ -329,14 +329,18 @@ static void __choose_pgpath(struct multipath *m, size_t nr_bytes) /* * Loop through priority groups until we find a valid path. * First time we skip PGs marked 'bypassed'. - * Second time we only try the ones we skipped. + * Second time we only try the ones we skipped, but set + * pg_init_delay_retry so we do not hammer controllers. */ do { list_for_each_entry(pg, &m->priority_groups, list) { if (pg->bypassed == bypassed) continue; - if (!__choose_path_in_pg(m, pg, nr_bytes)) + if (!__choose_path_in_pg(m, pg, nr_bytes)) { + if (!bypassed) + m->pg_init_delay_retry = 1; return; + } } } while (bypassed--);