From: Tejun Heo <htejun@gmail.com>
To: jgarzik@pobox.com, linux-ide@vger.kernel.org, albertcc@tw.ibm.com
Cc: Tejun Heo <htejun@gmail.com>
Subject: [PATCH 1/4] libata: implement ATA_FLAG_IN_EH port flag
Date: Thu, 2 Feb 2006 00:56:10 +0900 [thread overview]
Message-ID: <11388093701287-git-send-email-htejun@gmail.com> (raw)
In-Reply-To: <11388093703495-git-send-email-htejun@gmail.com>
ATA_FLAG_IN_EH flag is set on entry to EH and cleared on completion.
This patch just sets and clears the flag. Following patches will
build normal qc execution / EH synchronization aroung this flag.
Signed-off-by: Tejun Heo <htejun@gmail.com>
---
drivers/scsi/libata-scsi.c | 9 +++++++++
include/linux/libata.h | 2 ++
2 files changed, 11 insertions(+), 0 deletions(-)
402b1d5c510fe7f9ad0457bcedb3a4742e79d649
diff --git a/drivers/scsi/libata-scsi.c b/drivers/scsi/libata-scsi.c
index 6df8293..0e14259 100644
--- a/drivers/scsi/libata-scsi.c
+++ b/drivers/scsi/libata-scsi.c
@@ -735,6 +735,11 @@ int ata_scsi_error(struct Scsi_Host *hos
DPRINTK("ENTER\n");
+ spin_lock_irqsave(&ap->host_set->lock, flags);
+ assert(!(ap->flags & ATA_FLAG_IN_EH));
+ ap->flags |= ATA_FLAG_IN_EH;
+ spin_unlock_irqrestore(&ap->host_set->lock, flags);
+
ap = (struct ata_port *) &host->hostdata[0];
ap->ops->eng_timeout(ap);
@@ -742,6 +747,10 @@ int ata_scsi_error(struct Scsi_Host *hos
scsi_eh_flush_done_q(&ap->eh_done_q);
+ spin_lock_irqsave(&ap->host_set->lock, flags);
+ ap->flags &= ~ATA_FLAG_IN_EH;
+ spin_unlock_irqrestore(&ap->host_set->lock, flags);
+
DPRINTK("EXIT\n");
return 0;
}
diff --git a/include/linux/libata.h b/include/linux/libata.h
index 474cdfa..55176df 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -162,6 +162,8 @@ enum {
ATA_FLAG_PIO_LBA48 = (1 << 13), /* Host DMA engine is LBA28 only */
ATA_FLAG_IRQ_MASK = (1 << 14), /* Mask IRQ in PIO xfers */
+ ATA_FLAG_IN_EH = (1 << 15), /* EH in progress */
+
ATA_QCFLAG_ACTIVE = (1 << 1), /* cmd not yet ack'd to scsi lyer */
ATA_QCFLAG_SG = (1 << 3), /* have s/g table? */
ATA_QCFLAG_SINGLE = (1 << 4), /* no s/g, just a single buffer */
--
1.1.3
next prev parent reply other threads:[~2006-02-01 15:56 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-02-01 15:56 [PATCHSET] libata: various fixes related to EH, take #3 Tejun Heo
2006-02-01 15:56 ` [PATCH 3/4] libata: fix handling of race between timeout and completion Tejun Heo
2006-02-09 6:33 ` Jeff Garzik
2006-02-09 9:08 ` Tejun
2006-02-01 15:56 ` [PATCH 2/4] libata: EH / pio tasks synchronization Tejun Heo
2006-02-01 15:56 ` [PATCH 4/4] libata: kill NULL qc handling from ->eng_timeout callbacks Tejun Heo
2006-02-09 6:33 ` Jeff Garzik
2006-02-01 15:56 ` Tejun Heo [this message]
2006-02-09 6:18 ` [PATCH 1/4] libata: implement ATA_FLAG_IN_EH port flag Jeff Garzik
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=11388093701287-git-send-email-htejun@gmail.com \
--to=htejun@gmail.com \
--cc=albertcc@tw.ibm.com \
--cc=jgarzik@pobox.com \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.