diff options
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.patch | 49 |
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 @@ | |||
1 | From 07925ac535d9c4f774b0ba817fece3557670013f Mon Sep 17 00:00:00 2001 | ||
2 | From: Dan Williams <dan.j.williams@intel.com> | ||
3 | Date: Thu, 21 Jun 2012 23:36:15 -0700 | ||
4 | Subject: [PATCH 57/73] libsas: continue revalidation | ||
5 | |||
6 | commit 26f2f199ff150d8876b2641c41e60d1c92d2fb81 upstream. | ||
7 | |||
8 | Continue running revalidation until no more broadcast devices are | ||
9 | discovered. Fixes cases where re-discovery completes too early in a | ||
10 | domain with multiple expanders with pending re-discovery events. | ||
11 | Servicing BCNs can get backed up behind error recovery. | ||
12 | |||
13 | Signed-off-by: Dan Williams <dan.j.williams@intel.com> | ||
14 | Signed-off-by: James Bottomley <JBottomley@Parallels.com> | ||
15 | Signed-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 | |||
20 | diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c | ||
21 | index 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 | -- | ||
48 | 1.7.7.6 | ||
49 | |||