diff options
author | NeilBrown <neilb@suse.com> | 2017-04-05 14:05:51 +1000 |
---|---|---|
committer | Shaohua Li <shli@fb.com> | 2017-04-11 10:13:02 -0700 |
commit | fc9977dd069e4f82fcacb262652117c488647319 (patch) | |
tree | 329ec8a20b630d9f3cfdf2596dfe71ea71368c41 /drivers/md/raid10.h | |
parent | 673ca68d93879b9ffbbed874c9e70ca6e37cab15 (diff) | |
download | linux-fc9977dd069e4f82fcacb262652117c488647319.tar.gz linux-fc9977dd069e4f82fcacb262652117c488647319.tar.bz2 linux-fc9977dd069e4f82fcacb262652117c488647319.zip |
md/raid10: simplify the splitting of requests.
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: NeilBrown <neilb@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md/raid10.h')
-rw-r--r-- | drivers/md/raid10.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/raid10.h b/drivers/md/raid10.h index 3162615e57bd..735ce1a3d260 100644 --- a/drivers/md/raid10.h +++ b/drivers/md/raid10.h @@ -82,6 +82,7 @@ struct r10conf { mempool_t *r10bio_pool; mempool_t *r10buf_pool; struct page *tmppage; + struct bio_set *bio_split; /* When taking over an array from a different personality, we store * the new thread here until we fully activate the array. |