Bug 596626

Summary: Create reliable implementation of cancel_(delayed)_work_sync() in RHEL5
Product: Red Hat Enterprise Linux 5 Reporter: Stanislaw Gruszka <sgruszka>
Component: kernelAssignee: Oleg Nesterov <onestero>
Status: CLOSED ERRATA QA Contact: Zhouping Liu <zliu>
Severity: medium Docs Contact:
Priority: low    
Version: 5.5CC: caiqian, pbenas, prarit, qcai
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-01-13 21:34:50 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---
Bug Depends On:    
Bug Blocks: 582191    
Description Flags
test_workq kernel module none

Description Stanislaw Gruszka 2010-05-27 07:19:37 UTC
Description of problem:

(quote from Oleg)
"cancel_rearming_delayed_work + flush_workqueue has the following problems:

	- it hangs forever if the work doesn't rearm itsels (or if
	  it was never queued)

	- in fact it can't cancel the auto-rearming work too, if this
	  work is queued on >1 CPUs. But probably we can ignore this
	  very exotic case.

	- it can hang if called under any LOCK which could be used
	  by any other work which may be queued on the same wq.

We have some driver backported from upstream (like wireless stack) which have workqueue handlers like that 

   if (some_condition)
   queue_delayed_work(my->workqueue, my->work, delay);

We can stop that such work reliable in current RHEL5. We need cancel_delayed_work_sync and cancel_delayed_work with upstream semantics.

Comment 1 RHEL Product and Program Management 2010-05-27 07:41:19 UTC
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

Comment 2 Oleg Nesterov 2010-05-30 16:25:10 UTC
[RHEL5 PATCH 0/7] bz#596626: implement cancel_work_sync() and cancel_delayed_work_sync()

Comment 12 Jarod Wilson 2010-06-14 18:23:47 UTC
in kernel-2.6.18-203.el5
You can download this test kernel from http://people.redhat.com/jwilson/el5

Detailed testing feedback is always welcomed.

Comment 16 Stanislaw Gruszka 2010-12-15 07:33:26 UTC
Created attachment 468781 [details]
test_workq kernel module

I used this module to test workqueues, old kernel hangs within minutes, with patch kernel survive a night and I terminate the test.

Comment 22 errata-xmlrpc 2011-01-13 21:34:50 UTC
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.