This series introduces a new blk_status_t error code type for the block layer so that we can have tigher control and explicit semantics for block layer errors. All but the last three patches are cleanups that lead to the new type. The series it mostly limited to the block layer and drivers, and touching file systems a little bit. The only major exception is btrfs, which does funny things with bios and thus sees a larger amount of propagation of the new blk_status_t.