Red Hat Bugzilla – Bug 681360
block IO controller: Do not use kblockd workqueue for throttle work
Last modified: 2011-05-19 08:35:57 EDT
Description of problem: Currently throttle logic uses kblockd workqueue to queue up throttle work. It can lead to system hang when throttling is being used. And the reason being that there is a cyclic dependency between throttle work and CFQ unplug work. It can happen that CFQ was idling and there are lots of requests queued. This will lead to throtl dispatch thread to sleep on request descriptors and throtl work will not finish. Because throtl work has not finished, CFQ's unplug work will not be called as on same workqueue on same cpu, previous work must have finished before new work is called. And as CFQ unplug will not happen, no requests will be dispatched, no requests descriptors will be freed and hence throtl work does not wake up and finish. Version-Release number of selected component (if applicable): How reproducible: There was one upstream reporter who could reproduce it consistently. I could not on my local machine. Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
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 on kernel-2.6.32-130.el6
An advisory has been issued which should help the problem described in this bug report. This report is therefore being closed with a resolution of ERRATA. For more information on therefore solution and/or where to find the updated files, please follow the link below. You may reopen this bug report if the solution does not work for you. http://rhn.redhat.com/errata/RHSA-2011-0542.html