• NeilBrown's avatar
    md: fix problem when adding device to read-only array with bitmap. · bb4a65df
    NeilBrown authored
    commit 8313b8e57f55b15e5b7f7fc5d1630bbf686a9a97 upstream.
    If an array is started degraded, and then the missing device
    is found it can be re-added and a minimal bitmap-based recovery
    will bring it fully up-to-date.
    If the array is read-only a recovery would not be allowed.
    But also if the array is read-only and the missing device was
    present very recently, then there could be no need for any
    recovery at all, so we simply include the device in the read-only
    array without any recovery.
    However... if the missing device was removed a little longer ago
    it could be missing some updates, but if a bitmap is present it will
    be conditionally accepted pending a bitmap-based update.  We don't
    currently detect this case properly and will include that old
    device into the read-only array with no recovery even though it really
    needs a recovery.
    This patch keeps track of whether a bitmap-based-recovery is really
    needed or not in the new Bitmap_sync rdev flag.  If that is set,
    then the device will not be added to a read-only array.
    Cc: Andrei Warkentin <andreiw@vmware.com>
    Fixes: d70ed2e4Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
md.c 224 KB