• NeilBrown's avatar
    [PATCH] Three one-liners in md.c · 6985c43f
    NeilBrown authored
    The main problem fixes is that in certain situations stopping md arrays may
    take longer than you expect, or may require multiple attempts.  This would
    only happen when resync/recovery is happening.
    
    This patch fixes three vaguely related bugs.
    
    1/ The recent change to use kthreads got the setting of the
       process name wrong.  This fixes it.
    2/ The recent change to use kthreads lost the ability for
       md threads to be signalled with SIG_KILL.  This restores that.
    3/ There is a long standing bug in that if:
        - An array needs recovery (onto a hot-spare) and
        - The recovery is being blocked because some other array being
           recovered shares a physical device and
        - The recovery thread is killed with SIG_KILL
       Then the recovery will appear to have completed with no IO being
       done, which can cause data corruption.
       This patch makes sure that incomplete recovery will be treated as
       incomplete.
    
    Note that any kernel affected by bug 2 will not suffer the problem of bug
    3, as the signal can never be delivered.  Thus the current 2.6.14-rc
    kernels are not susceptible to data corruption.  Note also that if arrays
    are shutdown (with "mdadm -S" or "raidstop") then the problem doesn't
    occur.  It only happens if a SIGKILL is independently delivered as done by
    'init' when shutting down.
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    6985c43f
md.c 97.9 KB