Skip to content
  • Jens Axboe's avatar
    block: shrink struct bio down to 2 cache lines again · 2c68f6dc
    Jens Axboe authored
    
    
    Commit bcf2843b3f8f added ->bi_error to cleanup the error passing
    for struct bio, but that ended up adding 4 bytes and a 4 byte hole
    to the size of struct bio. For a clean config, that bumped it from
    128 bytes, to 136 bytes, on x86-64.
    
    The ->bi_flags member is currently an unsigned long, but it fits
    easily within an int. Change it to an unsigned int, adjust the
    the pool offset code, and move ->bi_error into the new hole. Then
    we end up with a 128 byte bio again.
    
    Change the bio flag set/clear to use cmpxchg to ensure we don't
    lose any flags when manipulating them.
    
    Signed-off-by: default avatarJens Axboe <axboe@fb.com>
    2c68f6dc