From: Tejun Heo <tj@kernel.org>
To: Jeff Garzik <jeff@garzik.org>,
IDE/ATA development list <linux-ide@vger.kernel.org>
Subject: [PATCH #upstream-fixes 1/4] libata: fix device iteration bugs
Date: Sun, 26 Oct 2008 15:50:11 +0900 [thread overview]
Message-ID: <49041323.9020309@kernel.org> (raw)
There were several places where only enabled devices should be
iterated over but device enabledness wasn't checked.
* IDENTIFY data 40 wire check in cable_is_40wire()
* xfer_mode/ncq_enabled saving in ata_scsi_error()
* DUBIOUS_XFER handling in ata_set_mode()
While at it, reformat comment in cable_is_40wire().
Signed-off-by: Tejun Heo <tj@kernel.org>
---
Jeff, this four patch series fixes iteration bugs and improves
iterators and fix ata_port_detach() related bugs. The iterator change
is a bit big for #upstream-fixes but it's fairly straight forward and
I verified them in most combinations, so it should be pretty safe.
Thanks.
drivers/ata/libata-core.c | 18 ++++++++----------
drivers/ata/libata-eh.c | 9 +++++++++
2 files changed, 17 insertions(+), 10 deletions(-)
Index: work/drivers/ata/libata-core.c
===================================================================
--- work.orig/drivers/ata/libata-core.c
+++ work/drivers/ata/libata-core.c
@@ -4169,18 +4169,16 @@ static int cable_is_40wire(struct ata_po
if (ap->cbl == ATA_CBL_PATA40_SHORT)
return 0;
/* If the controller doesn't know we scan
-
- - Note: We look for all 40 wire detects at this point.
- Any 80 wire detect is taken to be 80 wire cable
- because
- - In many setups only the one drive (slave if present)
- will give a valid detect
- - If you have a non detect capable drive you don't
- want it to colour the choice
- */
+ *
+ * - Note: We look for all 40 wire detects at this point. Any
+ * 80 wire detect is taken to be 80 wire cable because - In
+ * many setups only the one drive (slave if present) will
+ * give a valid detect - If you have a non detect capable
+ * drive you don't want it to colour the choice
+ */
ata_port_for_each_link(link, ap) {
ata_link_for_each_dev(dev, link) {
- if (!ata_is_40wire(dev))
+ if (ata_dev_enabled(dev) && !ata_is_40wire(dev))
return 0;
}
}
Index: work/drivers/ata/libata-eh.c
===================================================================
--- work.orig/drivers/ata/libata-eh.c
+++ work/drivers/ata/libata-eh.c
@@ -603,6 +603,9 @@ void ata_scsi_error(struct Scsi_Host *ho
ata_link_for_each_dev(dev, link) {
int devno = dev->devno;
+ if (!ata_dev_enabled(dev))
+ continue;
+
ehc->saved_xfer_mode[devno] = dev->xfer_mode;
if (ata_ncq_enabled(dev))
ehc->saved_ncq_enabled |= 1 << devno;
@@ -2790,6 +2793,9 @@ int ata_set_mode(struct ata_link *link,
/* if data transfer is verified, clear DUBIOUS_XFER on ering top */
ata_link_for_each_dev(dev, link) {
+ if (!ata_dev_enabled(dev))
+ continue;
+
if (!(dev->flags & ATA_DFLAG_DUBIOUS_XFER)) {
struct ata_ering_entry *ent;
@@ -2811,6 +2817,9 @@ int ata_set_mode(struct ata_link *link,
u8 saved_xfer_mode = ehc->saved_xfer_mode[dev->devno];
u8 saved_ncq = !!(ehc->saved_ncq_enabled & (1 << dev->devno));
+ if (!ata_dev_enabled(dev))
+ continue;
+
if (dev->xfer_mode != saved_xfer_mode ||
ata_ncq_enabled(dev) != saved_ncq)
dev->flags |= ATA_DFLAG_DUBIOUS_XFER;
next reply other threads:[~2008-10-26 6:50 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-26 6:50 Tejun Heo [this message]
2008-10-26 6:51 ` [PATCH #upstream-fixes 2/4] libata: beef up iterators Tejun Heo
2008-10-26 6:51 ` [PATCH #upstream-fixes 3/4] libata: when restoring SControl during detach do the PMP links first Tejun Heo
2008-10-26 6:52 ` [PATCH #upstream-fixes 4/4] libata: perform port detach in EH Tejun Heo
2008-10-28 4:02 ` Jeff Garzik
2008-10-26 14:31 ` [PATCH #upstream-fixes 2/4] libata: beef up iterators Elias Oltmanns
2008-10-27 9:06 ` Tejun Heo
2008-10-27 9:39 ` Elias Oltmanns
2008-10-27 10:17 ` Tejun Heo
2008-10-27 11:58 ` Elias Oltmanns
2008-10-28 4:01 ` Jeff Garzik
2008-10-30 1:25 ` Mark Lord
2008-10-30 1:58 ` Jeff Garzik
2008-10-26 10:47 ` [PATCH #upstream-fixes 1/4] libata: fix device iteration bugs Sergei Shtylyov
2008-10-27 9:07 ` Tejun Heo
2008-10-27 10:59 ` [PATCH #upstream-fixes 1/4 UPDATED] " Tejun Heo
2008-10-28 3:57 ` Jeff Garzik
[not found] <6ca8fe89c868f95831328d31c27f9cdb@localhost>
2008-10-27 15:45 ` Fwd: [PATCH #upstream-fixes 1/4] " Guntsche Michael
2008-11-10 6:52 ` Tejun Heo
2008-11-10 10:10 ` Michael Guntsche
2008-11-10 10:21 ` Tejun Heo
2008-11-10 15:07 ` Mark Lord
2008-11-11 2:45 ` Tejun Heo
2008-11-11 4:01 ` Mark Lord
2008-11-11 9:19 ` Sergei Shtylyov
2008-11-11 13:34 ` Michael Guntsche
2008-11-11 14:29 ` Mark Lord
2008-11-11 15:03 ` Guntsche Michael
2008-11-12 1:20 ` Mark Lord
2008-11-12 2:34 ` Tejun Heo
2008-11-12 7:22 ` Michael Guntsche
2008-11-12 8:15 ` Tejun Heo
2008-11-12 9:16 ` Michael Guntsche
2008-11-12 9:27 ` Tejun Heo
2008-11-12 9:43 ` Michael Guntsche
2008-11-12 9:48 ` Tejun Heo
2008-11-12 9:55 ` Michael Guntsche
2008-11-14 2:38 ` Mark Lord
2008-11-14 6:59 ` Michael Guntsche
2008-11-14 17:21 ` Mark Lord
2008-11-14 17:24 ` Mark Lord
2008-11-14 22:26 ` Guntsche Michael
2008-11-15 4:13 ` Mark Lord
2008-11-15 4:17 ` Mark Lord
2008-11-15 9:29 ` Guntsche Michael
2008-11-15 10:22 ` Guntsche Michael
2008-11-15 20:43 ` Mark Lord
2008-11-16 5:14 ` Tejun Heo
2008-11-16 5:49 ` Mark Lord
2008-11-16 8:41 ` Michael Guntsche
2008-11-16 9:15 ` Michael Guntsche
2008-11-16 10:48 ` Sergei Shtylyov
2008-11-16 11:23 ` Alan Cox
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=49041323.9020309@kernel.org \
--to=tj@kernel.org \
--cc=jeff@garzik.org \
--cc=linux-ide@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).