summaryrefslogtreecommitdiffstats
path: root/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch')
-rw-r--r--recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch49
1 files changed, 49 insertions, 0 deletions
diff --git a/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch
new file mode 100644
index 00000000..2a242099
--- /dev/null
+++ b/recipes-kernel/linux/linux-ti33x-psp-3.2/3.2.25/0057-libsas-continue-revalidation.patch
@@ -0,0 +1,49 @@
1From 07925ac535d9c4f774b0ba817fece3557670013f Mon Sep 17 00:00:00 2001
2From: Dan Williams <dan.j.williams@intel.com>
3Date: Thu, 21 Jun 2012 23:36:15 -0700
4Subject: [PATCH 57/73] libsas: continue revalidation
5
6commit 26f2f199ff150d8876b2641c41e60d1c92d2fb81 upstream.
7
8Continue running revalidation until no more broadcast devices are
9discovered. Fixes cases where re-discovery completes too early in a
10domain with multiple expanders with pending re-discovery events.
11Servicing BCNs can get backed up behind error recovery.
12
13Signed-off-by: Dan Williams <dan.j.williams@intel.com>
14Signed-off-by: James Bottomley <JBottomley@Parallels.com>
15Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
16---
17 drivers/scsi/libsas/sas_expander.c | 8 ++++----
18 1 files changed, 4 insertions(+), 4 deletions(-)
19
20diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
21index e48ba4b..6330110 100644
22--- a/drivers/scsi/libsas/sas_expander.c
23+++ b/drivers/scsi/libsas/sas_expander.c
24@@ -1983,9 +1983,7 @@ int sas_ex_revalidate_domain(struct domain_device *port_dev)
25 struct domain_device *dev = NULL;
26
27 res = sas_find_bcast_dev(port_dev, &dev);
28- if (res)
29- goto out;
30- if (dev) {
31+ while (res == 0 && dev) {
32 struct expander_device *ex = &dev->ex_dev;
33 int i = 0, phy_id;
34
35@@ -1997,8 +1995,10 @@ int sas_ex_revalidate_domain(struct domain_device *port_dev)
36 res = sas_rediscover(dev, phy_id);
37 i = phy_id + 1;
38 } while (i < ex->num_phys);
39+
40+ dev = NULL;
41+ res = sas_find_bcast_dev(port_dev, &dev);
42 }
43-out:
44 return res;
45 }
46
47--
481.7.7.6
49