aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/dm-mpath.c
diff options
context:
space:
mode:
authorMoger, Babu <Babu.Moger@lsi.com>2010-03-05 21:29:49 -0500
committerAlasdair G Kergon <agk@redhat.com>2010-03-05 21:29:49 -0500
commitf7b934c8127deebf4eb56fbe4a4ae0da16b6dbcd (patch)
tree75e4a78786f3a782142d9d686d53aac9204f5fc1 /drivers/md/dm-mpath.c
parent83c0d5d5388a8d45f7a45e0ec34adc52a78c81ad (diff)
dm mpath: skip activate_path for failed paths
This patch adds two minor fixes while processing device mapper path activation. Skip failed paths while calling activate_path. If the path is already failed then activate_path will fail for sure. We don't have to call in that case. In some case this might cause prolonged retries unnecessarily. Change the misleading message if the path being activated fails with SCSI_DH_NOSYS. Signed-off-by: Babu Moger <babu.moger@lsi.com> Signed-off-by: Alasdair G Kergon <agk@redhat.com>
Diffstat (limited to 'drivers/md/dm-mpath.c')
-rw-r--r--drivers/md/dm-mpath.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
index 2c6bf74ad5c1..ecada419809c 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
@@ -461,6 +461,9 @@ static void process_queued_ios(struct work_struct *work)
461 m->pg_init_count++; 461 m->pg_init_count++;
462 m->pg_init_required = 0; 462 m->pg_init_required = 0;
463 list_for_each_entry(tmp, &pgpath->pg->pgpaths, list) { 463 list_for_each_entry(tmp, &pgpath->pg->pgpaths, list) {
464 /* Skip failed paths */
465 if (!tmp->is_active)
466 continue;
464 if (queue_work(kmpath_handlerd, &tmp->activate_path)) 467 if (queue_work(kmpath_handlerd, &tmp->activate_path))
465 m->pg_init_in_progress++; 468 m->pg_init_in_progress++;
466 } 469 }
@@ -1142,8 +1145,8 @@ static void pg_init_done(void *data, int errors)
1142 errors = 0; 1145 errors = 0;
1143 break; 1146 break;
1144 } 1147 }
1145 DMERR("Cannot failover device because scsi_dh_%s was not " 1148 DMERR("Could not failover the device: Handler scsi_dh_%s "
1146 "loaded.", m->hw_handler_name); 1149 "Error %d.", m->hw_handler_name, errors);
1147 /* 1150 /*
1148 * Fail path for now, so we do not ping pong 1151 * Fail path for now, so we do not ping pong
1149 */ 1152 */