From: Jeff Garzik <jeff@garzik.org>
To: Tejun Heo <htejun@gmail.com>
Cc: Mark Lord <liml@rtr.ca>, Jeff Garzik <jgarzik@pobox.com>,
linux-ide@vger.kernel.org
Subject: Re: [PATCH] libata: fix SCSI/ATA device association during hotplug, take 2
Date: Fri, 02 Mar 2007 18:44:05 -0500 [thread overview]
Message-ID: <45E8B6C5.9010103@garzik.org> (raw)
In-Reply-To: <20061212042431.GD18947@htj.dyndns.org>
Tejun Heo wrote:
> Two subtle hotplug related bugs are found.
>
> * SCSI didn't use to issue commands to devices in SDEV_CANCEL state
> but now it does. For ATA devices, it means that SYNCHRONIZE_CACHE
> is issued even after libata tells SCSI midlayer that the SCSI device
> is offline now. When devices are swapped, SYNCHRONIZE_CACHE for the
> previous device can be issued to the later device.
>
> * Devices can be swapped while SCSI probing is in progress. SCSI
> device used to get associated with ATA device only after probing is
> complete, which means that SCSI device detaching is not performed
> while probing. This can result in mismatch between SCSI device and
> ATA device (e.g. sd attached to ATAPI device) if devices are
> swapped after INQUIRY but before probing is complete.
>
> This patch makes libata associate new SCSI device with ATA device
> before INQUIRY is issued and check whether SCSI device issuing a
> command matches dev->sdev on each command. Both bugs are fixed by
> this tighter coupling between SCSI device and ATA device.
>
> Signed-off-by: Tejun Heo <htejun@gmail.com>
> Cc: Mark Lord <liml@rtr.ca>
> ---
>
> scsi_dev <-> ata_dev association is moved to ->slave_alloc as Mark
> suggested.
[...]
> + /* Try to attach new SCSI device. SCSI midlayer
> + * doesn't supply separate interfaces for allocating
> + * and probing, so in this function, we can associate
> + * new SCSI device with its target ATA device only
> + * after probing is complete.
> + *
> + * However, hotplug event may occur during probing and
> + * we might have to detach a SCSI device which is in
> + * the middle of probing. So, we need to associate
> + * new SCSI device with its target ATA device before
> + * the first INQUIRY is complete.
> + *
> + * This is achieved by attaching the device in
> + * ->slave_alloc().
> + */
> + scsi_add_device(ap->scsi_host, 0, i, 0);
ACK
The above quoted comment serves to reinforce that libata eventually
needs to have an ATA transport class
prev parent reply other threads:[~2007-03-02 23:44 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-11-20 9:25 [PATCH] libata: fix SCSI/ATA device association during hotplug Tejun Heo
2006-11-28 9:07 ` Jeff Garzik
2006-11-28 14:12 ` Mark Lord
2006-11-28 17:14 ` Tejun Heo
2006-12-12 4:24 ` [PATCH] libata: fix SCSI/ATA device association during hotplug, take 2 Tejun Heo
2006-12-12 4:29 ` [PATCH] libata: use ata_scsi_find_dev() in ata_scsi_slave_config() Tejun Heo
2007-03-02 23:44 ` Jeff Garzik [this message]
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=45E8B6C5.9010103@garzik.org \
--to=jeff@garzik.org \
--cc=htejun@gmail.com \
--cc=jgarzik@pobox.com \
--cc=liml@rtr.ca \
--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).