RAID5 is calling copy_data() under sh->lock. But copy_data() does kmap(),
which can sleep.
The best fix is to use kmap_atomic() in there. It is faster than kmap() and
does not block.
The patch removes the unused bio_kmap() and replaces __bio_kmap() with
__bio_kmap_atomic(). I think it's best to withdraw the sleeping-and-slow
bio_kmap() from the kernel API before someone else tries to use it.
Also, I notice that bio_kmap_irq() was using local_save_flags(). This is a
bug - local_save_flags() does not disable interrupts. Converted that to
local_irq_save(). These names are terribly chosen.