• C
    Btrfs: use a btrfs bioset instead of abusing bio internals · 9be3395b
    Chris Mason 提交于
    Btrfs has been pointer tagging bi_private and using bi_bdev
    to store the stripe index and mirror number of failed IOs.
    
    As bios bubble back up through the call chain, we use these
    to decide if and how to retry our IOs.  They are also used
    to count IO failures on a per device basis.
    
    Recently a bio tracepoint was added lead to crashes because
    we were abusing bi_bdev.
    
    This commit adds a btrfs bioset, and creates explicit fields
    for the mirror number and stripe index.  The plan is to
    extend this structure for all of the fields currently in
    struct btrfs_bio, which will mean one less kmalloc in
    our IO path.
    Signed-off-by: NChris Mason <chris.mason@fusionio.com>
    Reported-by: NTejun Heo <tj@kernel.org>
    9be3395b
extent_io.h 12.7 KB