From: Tejun Heo <htejun@gmail.com>
To: "zhao, forrest" <forrest.zhao@intel.com>
Cc: jgarzik@pobox.com, alan@lxorguk.ukuu.org.uk, axboe@suse.de,
albertcc@tw.ibm.com, lkosewsk@gmail.com,
linux-ide@vger.kernel.org
Subject: Re: [PATCH 09/15] libata-hp: activate hotplug by adding a call to ata_eh_hotplug() from EH
Date: Thu, 13 Apr 2006 18:30:06 +0900 [thread overview]
Message-ID: <443E1A1E.4070705@gmail.com> (raw)
In-Reply-To: <1144918803.19687.27.camel@localhost.localdomain>
zhao, forrest wrote:
> On Thu, 2006-04-13 at 17:45 +0900, Tejun Heo wrote:
>> zhao, forrest wrote:
>>> On Tue, 2006-04-11 at 23:14 +0900, Tejun Heo wrote:
>>>> Now all the required pieces for hotplug support are in place. Update
>>>> all ->error_handler's to call ata_eh_hotplug() after regular EH is
>>>> finished. This enables hotplug support for all drivers which use new
>>>> EH. With this patch, all new EH drivers can do warm unplug and plug.
>>>>
>>>> Signed-off-by: Tejun Heo <htejun@gmail.com>
>>>>
>>>> ---
>>>>
>>>> drivers/scsi/ahci.c | 1 +
>>>> drivers/scsi/libata-bmdma.c | 1 +
>>>> drivers/scsi/sata_sil24.c | 1 +
>>>> 3 files changed, 3 insertions(+), 0 deletions(-)
>>>>
>>>> 5a9a286e07ca0d216be1b8f81ab6c6e7048ae963
>>>> diff --git a/drivers/scsi/ahci.c b/drivers/scsi/ahci.c
>>>> index a8b699a..7f478c4 100644
>>>> --- a/drivers/scsi/ahci.c
>>>> +++ b/drivers/scsi/ahci.c
>>>> @@ -864,6 +864,7 @@ static void ahci_error_handler(struct at
>>>> ata_eh_revive(ap, action,
>>>> ahci_softreset, ahci_hardreset, ahci_postreset);
>>>> ata_eh_finish_qcs(ap, qc, &tf);
>>>> + ata_eh_hotplug(ap);
>>>> }
>>>>
>>>> static void ahci_post_internal_cmd(struct ata_queued_cmd *qc)
>>>> diff --git a/drivers/scsi/libata-bmdma.c b/drivers/scsi/libata-bmdma.c
>>>> index 3c3bc71..a87efae 100644
>>>> --- a/drivers/scsi/libata-bmdma.c
>>>> +++ b/drivers/scsi/libata-bmdma.c
>>>> @@ -729,6 +729,7 @@ void ata_bmdma_drive_eh(struct ata_port
>>>> ata_eh_report(ap, qc, &tf, serror, action, NULL);
>>>> ata_eh_revive(ap, action, softreset, hardreset, postreset);
>>>> ata_eh_finish_qcs(ap, qc, &tf);
>>>> + ata_eh_hotplug(ap);
>>>> }
>>>>
>>>> /**
>>>> diff --git a/drivers/scsi/sata_sil24.c b/drivers/scsi/sata_sil24.c
>>>> index 9acf7a4..1ca76f7 100644
>>>> --- a/drivers/scsi/sata_sil24.c
>>>> +++ b/drivers/scsi/sata_sil24.c
>>>> @@ -852,6 +852,7 @@ static void sil24_error_handler(struct a
>>>> ata_eh_revive(ap, action,
>>>> sil24_softreset, sil24_hardreset, sil24_postreset);
>>>> ata_eh_finish_qcs(ap, qc, &tf);
>>>> + ata_eh_hotplug(ap);
>>>> }
>>>>
>>> Does it make sense to invoke ata_eh_hotplug() in ata_scsi_error()
>>> instead of invoking ata_eh_hotplug() in each LLDD in order to
>>> make code more general?
>>>
>> No, not really. To do that we'll need another port operation
>> ->hotplug(), which, I think, has no real benefits.
>
>>From my understanding, in ata_scsi_error invoking
> ata_eh_hotplug(ap); after ap->ops->error_handler(ap);
> will do. No need to add ->hotplug() for port operation.
> This way we avoid to invoke ata_eh_hotplug() in each LLDD.
>
Hmmmm... maybe you're right and we don't need to allow LLDDs to override
hotplug operation. After all, LLDDs cannot override ata_bus_probe().
But, then again, it's just nice and consistent to allow overriding of
the operation. And, ata_eh_hotplug() fits nicely with other EH
operations, IMHO. And calling one more operation isn't really a big deal.
Maybe, we need to come up with the function which packages standard
calls to eh helpers for drivers like sata_sil24 and ahci, but I think
the current level of code duplication is well within acceptable range.
Do you have any other reason than duplicated calls to ata_eh_hotplug()?
--
tejun
next prev parent reply other threads:[~2006-04-13 9:30 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-04-11 14:14 [PATCHSET 9/9] add hotplug support Tejun Heo
2006-04-11 14:14 ` [PATCH 04/15] libata-hp: connect ATA hotplug events to SCSI hotplug Tejun Heo
2006-04-11 14:14 ` [PATCH 01/15] libata-hp: implement ata_eh_detach_dev() Tejun Heo
2006-04-11 14:14 ` [PATCH 03/15] libata-hp: implement ata_eh_scsi_hotplug() Tejun Heo
2006-04-11 14:14 ` [PATCH 09/15] libata-hp: activate hotplug by adding a call to ata_eh_hotplug() from EH Tejun Heo
2006-04-13 8:18 ` zhao, forrest
2006-04-13 8:45 ` Tejun Heo
2006-04-13 9:00 ` zhao, forrest
2006-04-13 9:30 ` Tejun Heo [this message]
2006-04-11 14:14 ` [PATCH 02/15] libata-hp: implement ata_eh_hotplug() Tejun Heo
2006-04-11 14:14 ` [PATCH 06/15] libata-hp: use ata_scsi_slave_destroy() in low level drivers Tejun Heo
2006-04-11 14:14 ` [PATCH 07/15] libata-hp: implement transportt->user_scan Tejun Heo
2006-04-11 14:14 ` [PATCH 05/15] libata-hp: implement ata_scsi_slave_destroy() Tejun Heo
2006-04-12 5:27 ` Tejun Heo
2006-04-12 22:32 ` Jeff Garzik
2006-04-13 3:46 ` Tejun Heo
2006-04-11 14:14 ` [PATCH 08/15] libata-hp: add hotplug hooks into regular EH Tejun Heo
2006-04-11 14:14 ` [PATCH 15/15] sata_sil24: add hotplug support Tejun Heo
2006-04-11 14:14 ` [PATCH 14/15] ahci: " Tejun Heo
2006-04-11 14:14 ` [PATCH 12/15] sata_sil: new interrupt handler Tejun Heo
2006-04-11 14:14 ` [PATCH 13/15] sata_sil: add hotplug support Tejun Heo
2006-04-11 14:14 ` [PATCH 10/15] libata-hp: skip EH reset if no device to recover and hotplug pending Tejun Heo
2006-04-11 14:14 ` [PATCH 11/15] sata_sil: add new constants in preparation for new interrupt handler Tejun Heo
2006-04-12 1:49 ` [PATCHSET 9/9] add hotplug support Tejun Heo
2006-04-13 7:53 ` zhao, forrest
2006-04-13 8:49 ` Tejun Heo
2006-04-13 16:07 ` Jeff Garzik
2006-04-13 16:50 ` Tejun Heo
2006-04-27 9:29 ` Jeff Garzik
2006-04-27 10:53 ` Tejun Heo
2006-04-27 11:29 ` Jeff Garzik
2006-04-27 12:38 ` Tejun Heo
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=443E1A1E.4070705@gmail.com \
--to=htejun@gmail.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=albertcc@tw.ibm.com \
--cc=axboe@suse.de \
--cc=forrest.zhao@intel.com \
--cc=jgarzik@pobox.com \
--cc=linux-ide@vger.kernel.org \
--cc=lkosewsk@gmail.com \
/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.