4.6.4, 3w_sas: timeout too small?

From: Harald Dunkel
Date: Mon Oct 17 2016 - 09:17:41 EST


Hi folks,

Question about the reset timeout of the 3w_sas:

For an unknown reason my 3ware 9750 RAID controller became
unresponsive. kernel.log:

Oct 16 06:30:42 nasl003b kernel: [4902556.775272] 3w-sas: scsi0: AEN: INFO (0x04:0x002B): Verify completed:unit=1.
Oct 16 06:38:29 nasl003b kernel: [4903023.388357] 3w-sas: scsi0: AEN: INFO (0x04:0x002B): Verify completed:unit=2.
Oct 16 06:41:33 nasl003b kernel: [4903207.577484] 3w-sas: scsi0: ERROR: (0x06:0x000D): Microcontroller Error: clearing.
Oct 16 06:42:11 nasl003b kernel: [4903245.701070] TMR Opcode TARGET_WARM_RESET authorization failed for Initiator Node: iqn.2014-01.com.example.ac.srva001
Oct 16 06:42:11 nasl003b kernel: [4903245.706778] TMR Opcode TARGET_WARM_RESET authorization failed for Initiator Node: iqn.2014-01.com.example.ac.srva001
Oct 16 06:42:15 nasl003b kernel: [4903249.298778] TMR Opcode TARGET_WARM_RESET authorization failed for Initiator Node: iqn.2014-01.com.example.ac.srva002
Oct 16 06:42:15 nasl003b kernel: [4903249.304369] TMR Opcode TARGET_WARM_RESET authorization failed for Initiator Node: iqn.2014-01.com.example.ac.srva002
Oct 16 06:42:15 nasl003b kernel: [4903249.318734] TMR Opcode TARGET_WARM_RESET authorization failed for Initiator Node: iqn.2014-01.com.example.ac.srva003
Oct 16 06:42:15 nasl003b kernel: [4903249.324122] TMR Opcode TARGET_WARM_RESET authorization failed for Initiator Node: iqn.2014-01.com.example.ac.srva003
Oct 16 06:42:41 nasl003b kernel: [4903275.739327] 3w-sas: scsi0: WARNING: (0x06:0x0006): Character ioctl (0x108) timed out, resetting card.
Oct 16 06:42:41 nasl003b kernel: [4903275.739402] sd 0:0:0:0: WARNING: (0x06:0x002C): Command (0x2a) timed out, resetting card.
Oct 16 06:43:36 nasl003b kernel: [4903330.757153] iSCSI Login timeout on Network Portal 172.19.96.217:3260
Oct 16 06:43:36 nasl003b kernel: [4903330.762124] iSCSI Login negotiation failed.
Oct 16 06:43:42 nasl003b kernel: [4903336.720892] 3w-sas: scsi0: ERROR: (0x06:0x0011): Controller not ready during reset sequence.
Oct 16 06:43:51 nasl003b kernel: [4903345.796529] iSCSI Login timeout on Network Portal 172.19.96.217:3260
Oct 16 06:43:51 nasl003b kernel: [4903345.801462] iSCSI Login negotiation failed.
Oct 16 06:44:06 nasl003b kernel: [4903360.835920] iSCSI Login timeout on Network Portal 172.19.96.217:3260
Oct 16 06:44:06 nasl003b kernel: [4903360.840843] iSCSI Login negotiation failed.
Oct 16 06:44:13 nasl003b kernel: [4903367.919662] INFO: task jbd2/sda1-8:235 blocked for more than 120 seconds.
Oct 16 06:44:13 nasl003b kernel: [4903367.924633] Tainted: G E 4.6.0-0.bpo.1-amd64 #1
Oct 16 06:44:13 nasl003b kernel: [4903367.929624] "echo 0 > /proc/sys/kernel/hung_task_timeout_secs" disables this message.
Oct 16 06:44:13 nasl003b kernel: [4903367.934751] jbd2/sda1-8 D ffff88042d896000 0 235 2 0x00000000
Oct 16 06:44:13 nasl003b kernel: [4903367.934756] ffff880424c2c440 ffff88042b43a140 ffff8804249e0000 ffff8804249dfbc0
Oct 16 06:44:13 nasl003b kernel: [4903367.934760] 7fffffffffffffff ffffffff815c50a0 ffff8804249dfc40 ffff8804000daf00
Oct 16 06:44:13 nasl003b kernel: [4903367.934763] ffffffff815c4821 0000000000000000 ffffffff815c785f 7fffffffffffffff
Oct 16 06:44:13 nasl003b kernel: [4903367.934766] Call Trace:
Oct 16 06:44:13 nasl003b kernel: [4903367.934783] [<ffffffff815c50a0>] ? bit_wait_timeout+0xa0/0xa0
Oct 16 06:44:13 nasl003b kernel: [4903367.934786] [<ffffffff815c4821>] ? schedule+0x31/0x80
Oct 16 06:44:13 nasl003b kernel: [4903367.934789] [<ffffffff815c785f>] ? schedule_timeout+0x22f/0x2c0
Oct 16 06:44:13 nasl003b kernel: [4903367.934794] [<ffffffff812e55fd>] ? blk_peek_request+0x4d/0x280
Oct 16 06:44:13 nasl003b kernel: [4903367.934797] [<ffffffff815c50a0>] ? bit_wait_timeout+0xa0/0xa0
:
:

The interesting point is that apparently the reset didn't succeed.
"Controller not ready during reset sequence" at 06:43:42. The 3ware
web interface says the controller was busy to write the cache to disk:

Oct 16, 2016 06:45:03AM (0x04:0x005E): Cache synchronization completed: unit=0

I have the impression that the timeout (60 secs?) in the driver is
insufficient. Do you think the status check in twl_reset_sequence()
could be improved?

There were no disk failures, of course.


Every helpful comment is highly appreciated.
Harri