aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md/md.c
diff options
context:
space:
mode:
authorNeilBrown <neilb@suse.de>2012-03-18 21:46:39 -0400
committerNeilBrown <neilb@suse.de>2012-03-18 21:46:39 -0400
commit050b66152f87c79e8d66aed0e7996f9336462d5f (patch)
tree44d100c2eadf2a56794e7b526abeb21d1019baa1 /drivers/md/md.c
parentba13da47ffa202784355561f72160a41350e95cc (diff)
md/raid10: handle merge_bvec_fn in member devices.
Currently we don't honour merge_bvec_fn in member devices so if there is one, we force all requests to be single-page at most. This is not ideal. So enhance the raid10 merge_bvec_fn to check that function in children as well. This introduces a small problem. There is no locking around calls the ->merge_bvec_fn and subsequent calls to ->make_request. So a device added between these could end up getting a request which violates its merge_bvec_fn. Currently the best we can do is synchronize_sched(). This will work providing no preemption happens. If there is preemption, we just have to hope that new devices are largely consistent with old devices. Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md/md.c')
-rw-r--r--drivers/md/md.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/md/md.c b/drivers/md/md.c
index 119de175bf12..4566b61373d5 100644
--- a/drivers/md/md.c
+++ b/drivers/md/md.c
@@ -5073,6 +5073,7 @@ static void md_clean(struct mddev *mddev)
5073 mddev->changed = 0; 5073 mddev->changed = 0;
5074 mddev->degraded = 0; 5074 mddev->degraded = 0;
5075 mddev->safemode = 0; 5075 mddev->safemode = 0;
5076 mddev->merge_check_needed = 0;
5076 mddev->bitmap_info.offset = 0; 5077 mddev->bitmap_info.offset = 0;
5077 mddev->bitmap_info.default_offset = 0; 5078 mddev->bitmap_info.default_offset = 0;
5078 mddev->bitmap_info.chunksize = 0; 5079 mddev->bitmap_info.chunksize = 0;