• Linus Torvalds's avatar
    Add "run_scheduled_work()" workqueue function · 68380b58
    Linus Torvalds authored
    This allows workqueue users to run just their own pending work, rather
    than wait for the whole workqueue to finish running.  This solves the
    deadlock with networking libphy that was due to other workqueue entries
    possibly needing a lock that was held by the routine that wanted to
    flush its own work.
    
    It's not wonderful: if you absolutely need to synchronize with the work
    function having been executed, any user strictly speaking should have
    its own completion tracking logic, since when we run things explicitly
    by hand, the generic workqueue layer can no longer help us synchronize.
    
    Also, this is strictly only usable for work that has been scheduled
    without any delayed timers.  You can not mix the new interface with
    schedule_delayed_work().
    
    But it's better than what we had currently.
    Acked-by: default avatarMaciej W. Rozycki <macro@linux-mips.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    68380b58
phy.c 19.6 KB