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 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.