• NeilBrown's avatar
    md: fix regression resulting in delays in clearing bits in a bitmap · 6c987910
    NeilBrown authored
    commit 589a594b (2.6.37-rc4) fixed a problem were md_thread would
    sometimes call the ->run function at a bad time.
    
    If an error is detected during array start up after the md_thread has
    been started, the md_thread is killed.  This resulted in the ->run
    function being called once.  However the array may not be in a state
    that it is safe to call ->run.
    
    However the fix imposed meant that  ->run was not called on a timeout.
    This means that when an array goes idle, bitmap bits do not get
    cleared promptly.  While the array is busy the bits will still be
    cleared when appropriate so this is not very serious.  There is no
    risk to data.
    
    Change the test so that we only avoid calling ->run when the thread
    is being stopped.  This more explicitly addresses the problem situation.
    
    This is suitable for 2.6.37-stable and any -stable kernel to which
    589a594b was applied.
    
    Cc: stable@kernel.org
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    6c987910
md.c 190 KB