| From: Mikulas Patocka <mpatocka@redhat.com> |
| Date: Wed, 8 Jul 2015 13:06:12 -0400 |
| Subject: libata: increase the timeout when setting transfer mode |
| |
| commit d531be2ca2f27cca5f041b6a140504999144a617 upstream. |
| |
| I have a ST4000DM000 disk. If Linux is booted while the disk is spun down, |
| the command that sets transfer mode causes the disk to spin up. The |
| spin-up takes longer than the default 5s timeout, so the command fails and |
| timeout is reported. |
| |
| Fix this by increasing the timeout to 15s, which is enough for the disk to |
| spin up. |
| |
| Signed-off-by: Mikulas Patocka <mpatocka@redhat.com> |
| Signed-off-by: Tejun Heo <tj@kernel.org> |
| Signed-off-by: Ben Hutchings <ben@decadent.org.uk> |
| --- |
| drivers/ata/libata-core.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/drivers/ata/libata-core.c |
| +++ b/drivers/ata/libata-core.c |
| @@ -4462,7 +4462,8 @@ static unsigned int ata_dev_set_xfermode |
| else /* In the ancient relic department - skip all of this */ |
| return 0; |
| |
| - err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 0); |
| + /* On some disks, this command causes spin-up, so we need longer timeout */ |
| + err_mask = ata_exec_internal(dev, &tf, NULL, DMA_NONE, NULL, 0, 15000); |
| |
| DPRINTK("EXIT, err_mask=%x\n", err_mask); |
| return err_mask; |