• NeilBrown's avatar
    md/raid10: simplify the splitting of requests. · fc9977dd
    NeilBrown authored
    raid10 splits requests in two different ways for two different
    reasons.
    
    First, bio_split() is used to ensure the bio fits with a chunk.
    Second, multiple r10bio structures are allocated to represent the
    different sections that need to go to different devices, to avoid
    known bad blocks.
    
    This can be simplified to just use bio_split() once, and not to use
    multiple r10bios.
    We delay the split until we know a maximum bio size that can
    be handled with a single r10bio, and then split the bio and queue
    the remainder for later handling.
    
    As with raid1, we allocate a new bio_set to help with the splitting.
    It is not correct to use fs_bio_set in a device driver.
    Signed-off-by: default avatarNeilBrown <neilb@suse.com>
    Signed-off-by: default avatarShaohua Li <shli@fb.com>
    fc9977dd
raid10.c 131 KB