summaryrefslogtreecommitdiffstats
path: root/drivers/md/raid5.h
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.com>2017-04-05 14:05:51 +1000
committerShaohua Li <shli@fb.com>2017-04-11 10:16:50 -0700
commitdd7a8f5dee81ffb1794df1103f07c63fd4f1d766 (patch)
tree75548d262b86202ad305a47491522c499098c783 /drivers/md/raid5.h
parent545250f2480911f053b092d4229d9f83a9dff222 (diff)
downloadlinux-dd7a8f5dee81ffb1794df1103f07c63fd4f1d766.tar.gz
linux-dd7a8f5dee81ffb1794df1103f07c63fd4f1d766.tar.bz2
linux-dd7a8f5dee81ffb1794df1103f07c63fd4f1d766.zip
md/raid5: make chunk_aligned_read() split bios more cleanly.
chunk_aligned_read() currently uses fs_bio_set - which is meant for filesystems to use - and loops if multiple splits are needed, which is not best practice. As this is only used for READ requests, not writes, it is unlikely to cause a problem. However it is best to be consistent in how we split bios, and to follow the pattern used in raid1/raid10. So create a private bioset, bio_split, and use it to perform a single split, submitting the remainder to generic_make_request() for later processing. Signed-off-by: NeilBrown <neilb@suse.com> Signed-off-by: Shaohua Li <shli@fb.com>
Diffstat (limited to 'drivers/md/raid5.h')
-rw-r--r--drivers/md/raid5.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/raid5.h b/drivers/md/raid5.h
index cdc7f92e1806..625c7f16fd6b 100644
--- a/drivers/md/raid5.h
+++ b/drivers/md/raid5.h
@@ -646,6 +646,7 @@ struct r5conf {
int pool_size; /* number of disks in stripeheads in pool */
spinlock_t device_lock;
struct disk_info *disks;
+ 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.