Home Home > GIT Browse
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Mahoney <jeffm@suse.com>2011-08-24 14:54:32 -0400
committerJeff Mahoney <jeffm@suse.com>2011-08-24 15:12:18 -0400
commit70cadcd555c987b45aff248e6ac01cb720da9161 (patch)
tree092a92b9f4b0953d7ed8bcc29be3414bb28c9dff
parenteccefcca39dc56723338addef30fc7aaf160902b (diff)
- Refreshed and re-enabled dm-path patches:
- patches.suse/dm-mpath-accept-failed-paths. - patches.suse/dm-mpath-detach-existing-hardware-handler.
-rw-r--r--patches.suse/dm-mpath-accept-failed-paths55
-rw-r--r--patches.suse/dm-mpath-detach-existing-hardware-handler10
-rw-r--r--series.conf5
3 files changed, 30 insertions, 40 deletions
diff --git a/patches.suse/dm-mpath-accept-failed-paths b/patches.suse/dm-mpath-accept-failed-paths
index 58b6e6331a..309419c784 100644
--- a/patches.suse/dm-mpath-accept-failed-paths
+++ b/patches.suse/dm-mpath-accept-failed-paths
@@ -1,9 +1,7 @@
-From 950e1951d452d08a5bd95d82d4cad7fa97fa4464 Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Thu, 19 Nov 2009 13:54:56 +0100
Subject: Accept failed paths for multipath maps
References: bnc#458037,bnc#458393
-Patch-mainline: Not yet
The multipath kernel module is rejecting any map with an invalid
device. However, as the multipathd is processing the events serially
@@ -14,25 +12,14 @@ paths as down.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
----
- drivers/md/dm-mpath.c | 71 ++++++++++++++++++++++++++++++++++++++++----------
+ drivers/md/dm-mpath.c | 68 +++++++++++++++++++++++++++++++++++++++++---------
drivers/md/dm-mpath.h | 1
- drivers/md/dm-table.c | 7 +++-
- 3 files changed, 64 insertions(+), 15 deletions(-)
+ drivers/md/dm-table.c | 7 +++--
+ 3 files changed, 62 insertions(+), 14 deletions(-)
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
-@@ -146,7 +146,8 @@ static void deactivate_path(struct work_
- struct pgpath *pgpath =
- container_of(work, struct pgpath, deactivate_path);
-
-- blk_abort_queue(pgpath->path.dev->bdev->bd_disk->queue);
-+ if (pgpath->path.dev)
-+ blk_abort_queue(pgpath->path.dev->bdev->bd_disk->queue);
- }
-
- static struct priority_group *alloc_priority_group(void)
-@@ -275,6 +276,11 @@ static int __choose_path_in_pg(struct mu
+@@ -276,6 +276,11 @@ static int __choose_path_in_pg(struct mu
m->current_pgpath = path_to_pgpath(path);
@@ -44,7 +31,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
if (m->current_pg != pg)
__switch_pg(m, m->current_pgpath);
-@@ -593,6 +599,7 @@ static struct pgpath *parse_path(struct
+@@ -543,6 +548,7 @@ static struct pgpath *parse_path(struct
{
int r;
struct pgpath *p;
@@ -52,12 +39,12 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
struct multipath *m = ti->private;
/* we need at least a path arg */
-@@ -605,14 +612,37 @@ static struct pgpath *parse_path(struct
+@@ -555,14 +561,37 @@ static struct pgpath *parse_path(struct
if (!p)
return ERR_PTR(-ENOMEM);
-- r = dm_get_device(ti, shift(as), dm_table_get_mode(ti->table),
-+ path = shift(as);
+- r = dm_get_device(ti, dm_shift_arg(as), dm_table_get_mode(ti->table),
++ path = dm_shift_arg(as);
+ r = dm_get_device(ti, path, dm_table_get_mode(ti->table),
&p->path.dev);
if (r) {
@@ -94,7 +81,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
struct request_queue *q = bdev_get_queue(p->path.dev->bdev);
r = scsi_dh_attach(q, m->hw_handler_name);
-@@ -649,6 +679,11 @@ static struct pgpath *parse_path(struct
+@@ -599,6 +628,11 @@ static struct pgpath *parse_path(struct
goto bad;
}
@@ -106,7 +93,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
return p;
bad:
-@@ -978,7 +1013,7 @@ static int fail_path(struct pgpath *pgpa
+@@ -937,7 +971,7 @@ static int fail_path(struct pgpath *pgpa
if (!pgpath->is_active)
goto out;
@@ -115,7 +102,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
pgpath->pg->ps.type->fail_path(&pgpath->pg->ps, &pgpath->path);
pgpath->is_active = 0;
-@@ -990,7 +1025,7 @@ static int fail_path(struct pgpath *pgpa
+@@ -949,7 +983,7 @@ static int fail_path(struct pgpath *pgpa
m->current_pgpath = NULL;
dm_path_uevent(DM_UEVENT_PATH_FAILED, m->ti,
@@ -123,8 +110,8 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
+ pgpath->path.pdev, m->nr_valid_paths);
schedule_work(&m->trigger_event);
- queue_work(kmultipathd, &pgpath->deactivate_path);
-@@ -1015,6 +1050,12 @@ static int reinstate_path(struct pgpath
+
+@@ -973,6 +1007,12 @@ static int reinstate_path(struct pgpath
if (pgpath->is_active)
goto out;
@@ -137,7 +124,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
if (!pgpath->pg->ps.type->reinstate_path) {
DMWARN("Reinstate path not supported by path selector %s",
pgpath->pg->ps.type->name);
-@@ -1037,7 +1078,7 @@ static int reinstate_path(struct pgpath
+@@ -995,7 +1035,7 @@ static int reinstate_path(struct pgpath
}
dm_path_uevent(DM_UEVENT_PATH_REINSTATED, m->ti,
@@ -146,7 +133,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
schedule_work(&m->trigger_event);
-@@ -1057,6 +1098,9 @@ static int action_dev(struct multipath *
+@@ -1015,6 +1055,9 @@ static int action_dev(struct multipath *
struct pgpath *pgpath;
struct priority_group *pg;
@@ -156,9 +143,9 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
list_for_each_entry(pg, &m->priority_groups, list) {
list_for_each_entry(pgpath, &pg->pgpaths, list) {
if (pgpath->path.dev == dev)
-@@ -1241,8 +1285,9 @@ static void activate_path(struct work_st
+@@ -1202,8 +1245,9 @@ static void activate_path(struct work_st
struct pgpath *pgpath =
- container_of(work, struct pgpath, activate_path);
+ container_of(work, struct pgpath, activate_path.work);
- scsi_dh_activate(bdev_get_queue(pgpath->path.dev->bdev),
- pg_init_done, pgpath);
@@ -168,7 +155,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
}
/*
-@@ -1426,7 +1471,7 @@ static int multipath_status(struct dm_ta
+@@ -1388,7 +1432,7 @@ static int multipath_status(struct dm_ta
pg->ps.type->info_args);
list_for_each_entry(p, &pg->pgpaths, list) {
@@ -177,7 +164,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
p->is_active ? "A" : "F",
p->fail_count);
if (pg->ps.type->status)
-@@ -1452,7 +1497,7 @@ static int multipath_status(struct dm_ta
+@@ -1414,7 +1458,7 @@ static int multipath_status(struct dm_ta
pg->ps.type->table_args);
list_for_each_entry(p, &pg->pgpaths, list) {
@@ -186,7 +173,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
if (pg->ps.type->status)
sz += pg->ps.type->status(&pg->ps,
&p->path, type, result + sz,
-@@ -1544,7 +1589,7 @@ static int multipath_ioctl(struct dm_tar
+@@ -1506,7 +1550,7 @@ static int multipath_ioctl(struct dm_tar
if (!m->current_pgpath)
__choose_pgpath(m, 0);
@@ -207,7 +194,7 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
};
--- a/drivers/md/dm-table.c
+++ b/drivers/md/dm-table.c
-@@ -541,9 +541,12 @@ int dm_get_device(struct dm_target *ti,
+@@ -552,9 +552,12 @@ EXPORT_SYMBOL_GPL(dm_set_device_limits);
*/
void dm_put_device(struct dm_target *ti, struct dm_dev *d)
{
diff --git a/patches.suse/dm-mpath-detach-existing-hardware-handler b/patches.suse/dm-mpath-detach-existing-hardware-handler
index 1429f05da7..f67392fc27 100644
--- a/patches.suse/dm-mpath-detach-existing-hardware-handler
+++ b/patches.suse/dm-mpath-detach-existing-hardware-handler
@@ -2,7 +2,6 @@ From 27d169318cbd6c8647f689e8dcff08920040408a Mon Sep 17 00:00:00 2001
From: Hannes Reinecke <hare@suse.de>
Date: Thu, 19 Nov 2009 14:39:24 +0100
Subject: [PATCH] multipath: detach existing hardware handler if none was specified
-Patch-mainline: not yet
When no hardware handler was specified in the multipath configuration
we should be detaching any existing ones. Otherwise unpredictable
@@ -11,11 +10,13 @@ results will happen.
Signed-off-by: Hannes Reinecke <hare@suse.de>
---
drivers/md/dm-mpath.c | 32 ++++++++++++++++++--------------
- 1 file changed, 18 insertions(+), 14 deletions(-)
+ 1 files changed, 18 insertions(+), 14 deletions(-)
+diff --git a/drivers/md/dm-mpath.c b/drivers/md/dm-mpath.c
+index 5e66b9d..aa5b5c5 100644
--- a/drivers/md/dm-mpath.c
+++ b/drivers/md/dm-mpath.c
-@@ -642,23 +642,27 @@ static struct pgpath *parse_path(struct
+@@ -627,23 +627,27 @@ static struct pgpath *parse_path(struct arg_set *as, struct path_selector *ps,
memcpy(p->path.pdev, p->path.dev->name, 16);
}
@@ -57,3 +58,6 @@ Signed-off-by: Hannes Reinecke <hare@suse.de>
}
if (m->hw_handler_params) {
+--
+1.5.3.2
+
diff --git a/series.conf b/series.conf
index fc775e0667..0cb1576968 100644
--- a/series.conf
+++ b/series.conf
@@ -448,10 +448,9 @@
patches.suse/dm-raid45-api-3.0
patches.fixes/dm-mpath-reattach-dh
patches.suse/dm-mpath-leastpending-path-update
-+needs_update patches.suse/dm-mpath-accept-failed-paths
-+needs_update patches.suse/dm-mpath-detach-existing-hardware-handler
+ patches.suse/dm-mpath-accept-failed-paths
+ patches.suse/dm-mpath-detach-existing-hardware-handler
patches.fixes/dm-table-switch-to-readonly
-+needs_update patches.suse/dm-mpath-evaluate-request-result-and-sense
patches.fixes/dm-release-map_lock-before-set_disk_ro
patches.suse/dm-mpath-no-activate-for-offlined-paths
patches.suse/dm-mpath-no-partitions-feature