Re: [PATCH] [SCSI]: libsas failure to revalidate domain for anything but the first expander child.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Sep 1, 2011 at 6:11 AM, Mark Salyzyn
<mark_salyzyn@xxxxxxxxxxxxxx> wrote:
> In an enclosure model where there are chaining expanders to a large body
> of storage, it was discovered that libsas, responding to a broadcast
> event change, would only revalidate the domain of first child expander
> in the list.
>
> The issue is that the pointer value to the discovered source device was
> used to break out of the loop, rather than the content of the pointer.
>
> This still remains non-compliant as the revalidate domain code is
> supposed to loop through all child expanders, and not stop at the first
> one it finds that reports a change count. However, the design of this
> routine does not allow multiple device discoveries and that would be a
> more complicated set of patches reserved for another day. We are fixing
> the glaring bug rather than refactoring the code.
>
> Please note, as I am *stuck* on Outlook as per company policy, the
> following inline content will likely not patch clean even emailed as
> 'Plain Text', the enclosed attached file should do the job.

Yeah, Outlook helped you out with some line wrapping.  The attachment
is missing "From:", "Subject::" and the rest of the changelog, I went
ahead and attached a revised version.

> I have Cc'd
> all the folks that originated the files in libsas, as there was no
> listed MAINTAINERs.

I wouldn't mind being cc'd on all libsas patches, probably all the
other libsas lldd maintainers would like to be cc'd as well (added
Xiangliang (mvsas) and Jack (pm8001))

> Checkpatch.pl reports clean. Patch applies cleanly to a WIDE variety of
> kernels up to latest.
>
> Sincerely -- Mark Salyzyn
>
> Cc: Luben Tuikov <tuikov@xxxxxxxxx>
> Cc: Darrick J Wong <djwong@xxxxxxxxxx>
> Cc: James Bottomley <jbottomley@xxxxxxxxxxxxx>

Reviewed-by: Dan Williams <dan.j.williams@xxxxxxxxx>
From e3569cf6e71f9435af8476c6729624cf32870326 Mon Sep 17 00:00:00 2001
From: Mark Salyzyn <mark_salyzyn@xxxxxxxxxxxxxx>
Date: Thu, 1 Sep 2011 06:11:17 -0700
Subject: [PATCH] libsas: failure to revalidate domain for anything but the
 first expander child

In an enclosure model where there are chaining expanders to a large body
of storage, it was discovered that libsas, responding to a broadcast
event change, would only revalidate the domain of first child expander
in the list.

The issue is that the pointer value to the discovered source device was
used to break out of the loop, rather than the content of the pointer.

This still remains non-compliant as the revalidate domain code is
supposed to loop through all child expanders, and not stop at the first
one it finds that reports a change count. However, the design of this
routine does not allow multiple device discoveries and that would be a
more complicated set of patches reserved for another day. We are fixing
the glaring bug rather than refactoring the code.

Cc: Luben Tuikov <tuikov@xxxxxxxxx>
Cc: Darrick J Wong <djwong@xxxxxxxxxx>
Cc: James Bottomley <jbottomley@xxxxxxxxxxxxx>
Reviewed-by: Dan Williams <dan.j.williams@xxxxxxxxx>
Signed-off-by: Mark Salyzyn <msalyzyn@xxxxxxxxxxxxxx>
---
 drivers/scsi/libsas/sas_expander.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/scsi/libsas/sas_expander.c b/drivers/scsi/libsas/sas_expander.c
index 874e29d..7d68517 100644
--- a/drivers/scsi/libsas/sas_expander.c
+++ b/drivers/scsi/libsas/sas_expander.c
@@ -1718,7 +1718,7 @@ static int sas_find_bcast_dev(struct domain_device *dev,
 	list_for_each_entry(ch, &ex->children, siblings) {
 		if (ch->dev_type == EDGE_DEV || ch->dev_type == FANOUT_DEV) {
 			res = sas_find_bcast_dev(ch, src_dev);
-			if (src_dev)
+			if (*src_dev)
 				return res;
 		}
 	}
-- 
1.7.6


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]
  Powered by Linux