• Tejun Heo's avatar
    md: fix and update workqueue usage · e804ac78
    Tejun Heo authored
    
    
    Workqueue usage in md has two problems.
    
    * Flush can be used during or depended upon by memory reclaim, but md
      uses the system workqueue for flush_work which may lead to deadlock.
    
    * md depends on flush_scheduled_work() to achieve exclusion against
      completion of removal of previous instances.  flush_scheduled_work()
      may incur unexpected amount of delay and is scheduled to be removed.
    
    This patch adds two workqueues to md - md_wq and md_misc_wq.  The
    former is guaranteed to make forward progress under memory pressure
    and serves flush_work.  The latter serves as the flush domain for
    other works.
    Signed-off-by: default avatarTejun Heo <tj@kernel.org>
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    e804ac78
md.c 189 KB