Hello, Nikolay. On Thu, Dec 17, 2015 at 05:43:12PM +0200, Nikolay Borisov wrote: > Right, but my initial understanding was that when canceling the delayed > work and then issuing flush_workqueue would act the same way as if > cancel_delayed_work_sync is called wrt to this particular delayed item, no? Not necessarily. cancel_delayed_work() cancels whatever is currently pending. flush_workqueue() flushes whatever is pending and in flight at the time of invocation. Imagine the following scenario. 1. Work item is running but hasn't requeued itself yet. 2. cancel_delayed_work_sync() doesn't do anything as it's not pending. 3. flush_workqueue() starts and waits for the running instance. 4. The running instance requeues itself but this isn't included in the scope of the above flush_workqueue(). 5. flush_workqueue() returns when the work item is finished (but it's still queued). Thanks. -- tejun -- dm-devel mailing list dm-devel@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/dm-devel