• NeilBrown's avatar
    md: Fix possible deadlock with multiple mempool allocations. · 4e78064f
    NeilBrown authored
    It is not safe to allocate from a mempool while holding an item
    previously allocated from that mempool as that can deadlock when the
    mempool is close to exhaustion.
    
    So don't use a bio list to collect the bios to write to multiple
    devices in raid1 and raid10.
    Instead queue each bio as it becomes available so an unplug will
    activate all previously allocated bios and so a new bio has a chance
    of being allocated.
    
    This means we must set the 'remaining' count to '1' before submitting
    any requests, then when all are submitted, decrement 'remaining' and
    possible handle the write completion at that point.
    Reported-by: default avatarTorsten Kaiser <just.for.lkml@googlemail.com>
    Tested-by: default avatarTorsten Kaiser <just.for.lkml@googlemail.com>
    Signed-off-by: default avatarNeilBrown <neilb@suse.de>
    4e78064f
raid10.c 67.3 KB