sorry for the delay, this got filtered into the check-every-once-in-while bucket. 2014-01-31 Tejun Heo <tj@xxxxxxxxxx>: > Hello, > > On Thu, Jan 30, 2014 at 05:24:16PM -0800, Peter Chang wrote: >> 774a1221e862b343388347bac9b318767336b20b tries to avoid an expensive sync >> by marking the current task iff it uses the async_schedule() machinery. > > That wasn't an optimization. It was a workaround for deadlock. sorry for the mis-characterization. > The patch description doesn't describe the reasons for the change at > all. What issues have you encountered? What are you trying to > achieve? the problem is that our current user-space environment expects block devices to be in /sys/block after the module load completes. if the cross cpu worker task is marked w/ ASYNC_USED (rather than the module loading task), module loading completes and the async tasks are 'racing' w/ user space. i fixed up the patch to just do the ASYNC_USED copying in the worker function (since there was some bogus-ness in the original w/ get_cpu()). does this patch make more sense? \p
Attachment:
0001-pci-copy-PF_USED_ASYNC-in-the-cross-cpu-probe-case.patch
Description: Binary data