• NeilBrown's avatar
    md: Fix raid10 recovery problem. · 745bc0b7
    NeilBrown authored
    There are two errors that can lead to recovery problems with raid10
    when used in 'far' more (not the default).
    
    Due to a '>' instead of '>=' the wrong block is located which would
    result in garbage being written to some random location, quite
    possible outside the range of the device, causing the newly
    reconstructed device to fail.
    
    The device size calculation had some rounding errors (it didn't round
    when it should) and so recovery would go a few blocks too far which
    would again cause a write to a random block address and probably
    a device error.
    
    The code for working with device sizes was fairly confused and spread
    out, so this has been tided up a bit.
    Signed-off-by: default avatarNeil Brown <neilb@suse.de>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    
    745bc0b7
raid10.c 59.2 KB