Bug 694625
Summary: | Non-responsive scsi target leads to excessive scsi recovery and dm-mp failover time | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 5 | Reporter: | Dave Wysochanski <dwysocha> |
Component: | kernel | Assignee: | Mike Christie <mchristi> |
Status: | CLOSED ERRATA | QA Contact: | Gris Ge <fge> |
Severity: | high | Docs Contact: | |
Priority: | high | ||
Version: | 5.5 | CC: | amark, anton, bubrown, ccui, coughlan, ctatman, dhoward, djeffery, dwysocha, fge, ichute, marting, mchristi, mgoodwin, plyons, rdassen, revers, xdl-redhat-bugzilla |
Target Milestone: | rc | Keywords: | Reopened, ZStream |
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | kernel-2.6.18-287.el5 | Doc Type: | Bug Fix |
Doc Text: |
In error recovery, most SCSI error recovery stages send a TUR (Test Unit Ready) command for every bad command when a driver error handler reports success. When several bad commands pointed to a same device, the device was probed multiple times. When the device was in a state where it did not respond to commands even after a recovery function returned success, the error handler had to wait for the commands to time out. This significantly impeded the recovery process. With this update, SCSI mid-layer error routines to send test commands have been fixed to respond once per device instead of once per bad command, thus reducing error recovery time considerably.
|
Story Points: | --- |
Clone Of: | 691945 | Environment: | |
Last Closed: | 2012-02-21 03:34:04 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: | |||
Bug Depends On: | 691945 | ||
Bug Blocks: | 741273 |
Description
Dave Wysochanski
2011-04-07 19:22:57 UTC
This request was evaluated by Red Hat Product Management for inclusion in Red Hat Enterprise Linux 5.7 and Red Hat does not plan to fix this issue the currently developed update. Contact your manager or support representative in case you need to escalate this bug. This request was evaluated by Red Hat Product Management for inclusion in a Red Hat Enterprise Linux maintenance release. Product Management has requested further review of this request by Red Hat Engineering, for potential inclusion in a Red Hat Enterprise Linux Update release for currently deployed products. This request is not yet committed for inclusion in an Update release. Patch(es) available in kernel-2.6.18-287.el5 You can download this test kernel (or newer) from http://people.redhat.com/jwilson/el5 Detailed testing feedback is always welcomed. Patch(es) available in kernel-2.6.18-287.el5 You can download this test kernel (or newer) from http://people.redhat.com/jwilson/el5 Detailed testing feedback is always welcomed. Dave, I got no difference after this patch on kernel -298 scsi_debug downloaded from http://lacrosse.corp.redhat.com/~fge/scsi_debug/ ======= [root@intel-canoepass-02 ~]# modprobe scsi_debug dev_size_mb=100 opts=4 [root@intel-canoepass-02 ~]# date Wed Nov 23 05:03:52 EST 2011 [root@intel-canoepass-02 ~]# echo -1 > /sys/module/scsi_debug/parameters/every_nth [root@intel-canoepass-02 ~]# dd if=/dev/sdb of=/dev/null count=1 iflag=direct dd: reading `/dev/sdb': Input/output error 0+0 records in 0+0 records out 0 bytes (0 B) copied, 120.01 seconds, 0.0 kB/s [root@intel-canoepass-02 ~]# date Wed Nov 23 05:05:52 EST 2011 ======== (In reply to comment #11) > Dave, > > I got no difference after this patch on kernel -298 > > scsi_debug downloaded from http://lacrosse.corp.redhat.com/~fge/scsi_debug/ > ======= > [root@intel-canoepass-02 ~]# modprobe scsi_debug dev_size_mb=100 opts=4 > [root@intel-canoepass-02 ~]# date > Wed Nov 23 05:03:52 EST 2011 > [root@intel-canoepass-02 ~]# echo -1 > > /sys/module/scsi_debug/parameters/every_nth Every 1 might be too aggressive. Try something like every 4th or 5th or even 2. Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: In error recovery, most SCSI error recovery stages send a TUR (Test Unit Ready) command for every bad command when a driver error handler reports success. When several bad commands pointed to a same device, the device was probed multiple times. When the device was in a state where it did not respond to commands even after a recovery function returned success, the error handler had to wait for the commands to time out. This significantly impeded the recovery process. With this update, SCSI mid-layer error routines to send test commands have been fixed to respond once per device instead of once per bad command, thus reducing error recovery time considerably. Chris, I see the ZStream keyword added here. So is this already queued for 5.7.z? The errata announcement for the fix is here: http://rhn.redhat.com/errata/RHSA-2011-1479.html Mike Christie, I still got 6 minutes timeout after change every_nth=2 Both kernel -274 and kernel -305 got 6 minutes timeout. === [root@RHEL5-Stable ~]# uname -r 2.6.18-305.el5 [root@RHEL5-Stable ~]# modprobe scsi_debug dev_size_mb=100 opts=4 [root@RHEL5-Stable ~]# sleep 1 [root@RHEL5-Stable ~]# date Sun Jan 29 11:00:45 CST 2012 [root@RHEL5-Stable ~]# echo 2 > /sys/module/scsi_debug/parameters/every_nth [root@RHEL5-Stable ~]# dd if=/dev/sdb of=/dev/null count=1 iflag=direct 1+0 records in 1+0 records out 512 bytes (512 B) copied, 0.000649 seconds, 789 kB/s [root@RHEL5-Stable ~]# dd if=/dev/sdb of=/dev/null count=1 iflag=direct dd: reading `/dev/sdb': Input/output error 0+0 records in 0+0 records out 0 bytes (0 B) copied, 359.967 seconds, 0.0 kB/s [root@RHEL5-Stable ~]# date Sun Jan 29 11:06:45 CST 2012 === The dmesg show 6 minutes is by design: === sd 1:0:0:0: timing out command, waited 360s sd 1:0:0:0: Unhandled error code sd 1:0:0:0: SCSI error: return code = 0x06000000 Result: hostbyte=DID_OK driverbyte=DRIVER_TIMEOUT,SUGGEST_OK === Am I use the incorrect way to test this bug? I assume, multipath is use (mostly) directio to check link status, so I choose dd to verify the timeout. Ah you know what, I do not think we will be able to use scsi_debug to test this. What you hit was the initial scsi command time out (/sys/block/sdX/device/timeout). What we changed is the behavior after that. For that we would need a way to control how the IO sent to fix up that problem is failed. When I made/tested the patch I had to actually modify the code to simulate what people were seeing. Thanks for the detail. All my multipath FC failover tests in RHEL 5.8 show no regression, I will set this bug as Sanity Only. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. http://rhn.redhat.com/errata/RHSA-2012-0150.html |