linux-ide.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Garzik <jgarzik@pobox.com>
To: Albert Lee <albertcc@tw.ibm.com>
Cc: Linux IDE <linux-ide@vger.kernel.org>,
	Bartlomiej Zolnierkiewicz <bzolnier@gmail.com>,
	Doug Maxey <dwm@maxeymade.com>, Tejun Heo <htejun@gmail.com>
Subject: Re: [PATCH/RFC 3/3] libata: check qc->err_mask for the internal commands
Date: Wed, 09 Nov 2005 01:31:24 -0500	[thread overview]
Message-ID: <437197BC.4090101@pobox.com> (raw)
In-Reply-To: <43718523.1000408@tw.ibm.com>

Albert Lee wrote:
> Patch 3/3:
>   check qc->err_mask for the internal commands.
> 
> Problem:
>   The results of internal commands issued by libata itself were not checked.
> 
>   For example, ata_dev_identify() only checks the device status (qc->tf.command).
>   However, checking the device status is not enough to detect all errors.
> 
> Changes:
>   - check qc->err_mask for the internal commands:
>     - ata_dev_identify()
>     - ata_dev_set_xfermode()
>     - ata_dev_reread_id()
>     - ata_dev_init_params() 
>     - atapi_request_sense()
> 
> The patch accesses qc (and ap) after the qc is completed.
> This is bad from the object life cycle point of view and might cause race.
> However, since libata has complete control over the hardware when libata issues the internal commands
> and it seems noboby else may issue command at the same time, 
> accessing qc after ata_qc_complete() looks to be ok here.
> 
> p.s. 
>      The patch above can also make ata_dev_identify() detect the
>      "phantom slave device" problem.
> 
>      The "phantom slave device" was seen in specific PATA master-only configuration.
>      The master device responds to some commands issued to the slave device, and
>      make a illusion that the slave device exists.
>      The device status register of the "phantom slave device" always read as zero.
>      So, using (qc->tf.command & ATA_ERR) cannot detect the error.
>      Checking qc->err_mask can make ata_dev_identify() detect such 
>      "phantom slave device" and exclude the phantom device.
> 
> For your review and advice, thanks.
> 
> Albert
> Signed-off-by: Albert Lee <albertcc@tw.ibm.com> 

In general this seems like an OK direction to take, but I am a bit 
worried about the object lifetime issues that you mention.  It is IMO 
worth considering a better lifetime strategy at this point, before 
applying this [worthwhile] change.

	Jeff



      reply	other threads:[~2005-11-09  6:31 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-09  4:57 [PATCH/RFC 0/3] libata: misc fixes Albert Lee
2005-11-09  5:03 ` [PATCH 1/3] libata: if condition fix for ata_dev_identify() Albert Lee
2005-11-09  5:07 ` [PATCH/RFC 2/3] libata: move err_mask to ata_queued_cmd Albert Lee
2005-11-09  6:25   ` Jeff Garzik
2005-11-10  7:56     ` [PATCH/RFC 0/4] libata: move err_mask to ata_queued_cmd (revised) Albert Lee
2005-11-10  7:59       ` [PATCH/RFC 1/4] libata: minor patch before moving err_mask Albert Lee
2005-11-10  8:01       ` [PATCH/RFC 2/4] libata: move err_mask to ata_queued_cmd Albert Lee
2005-11-10  8:03       ` [PATCH/RFC 3/4] libata: determine the err_mask when the error is found Albert Lee
2005-11-10  8:05       ` [PATCH/RFC 4/4] libata: determine the err_mask directly in atapi_packet_task() Albert Lee
2005-12-04  2:01       ` [PATCH/RFC 0/4] libata: move err_mask to ata_queued_cmd (revised) Jeff Garzik
2005-12-05  6:58         ` [PATCH 0/4] libata: move err_mask to ata_queued_cmd (revised #2) Albert Lee
2005-12-05  7:36           ` [PATCH 1/4] libata: minor patch before moving err_mask Albert Lee
2005-12-05  7:38           ` [PATCH 2/4] libata: move err_mask to ata_queued_cmd Albert Lee
2005-12-05  7:40           ` [PATCH 3/4] libata: determine the err_mask when the error is found Albert Lee
2005-12-05  7:42           ` [PATCH 4/4] libata: determine the err_mask directly in atapi_packet_task() Albert Lee
2005-12-06  3:34           ` [PATCH/RFC 1/1] libata: err_mask misc fix Albert Lee
2005-12-12 20:26             ` Jeff Garzik
2005-11-09  5:12 ` [PATCH/RFC 3/3] libata: check qc->err_mask for the internal commands Albert Lee
2005-11-09  6:31   ` 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=437197BC.4090101@pobox.com \
    --to=jgarzik@pobox.com \
    --cc=albertcc@tw.ibm.com \
    --cc=bzolnier@gmail.com \
    --cc=dwm@maxeymade.com \
    --cc=htejun@gmail.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 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).