All of lore.kernel.org
 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 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.