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:
parent
7715a6f9cd
commit
0cbf0711a1
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue