libata: fix sata_link_hardreset() @online out parameter handling

The @online out parameter is supposed to set to true iff link is
online and reset succeeded as advertised in the function description
and callers are coded expecting that.  However, sata_link_reset()
didn't behave this way on device readiness test failure.  Fix it.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
Tejun Heo 2008-05-19 01:15:05 +09:00 committed by Jeff Garzik
parent 7715a6f9cd
commit 0cbf0711a1
1 changed files with 5 additions and 1 deletions

View File

@ -3653,9 +3653,13 @@ int sata_link_hardreset(struct ata_link *link, const unsigned long *timing,
if (check_ready) if (check_ready)
rc = ata_wait_ready(link, deadline, check_ready); rc = ata_wait_ready(link, deadline, check_ready);
out: out:
if (rc && rc != -EAGAIN) if (rc && rc != -EAGAIN) {
/* online is set iff link is online && reset succeeded */
if (online)
*online = false;
ata_link_printk(link, KERN_ERR, ata_link_printk(link, KERN_ERR,
"COMRESET failed (errno=%d)\n", rc); "COMRESET failed (errno=%d)\n", rc);
}
DPRINTK("EXIT, rc=%d\n", rc); DPRINTK("EXIT, rc=%d\n", rc);
return rc; return rc;
} }