diff options
author | NeilBrown <neilb@suse.de> | 2012-03-19 02:46:39 +0100 |
---|---|---|
committer | NeilBrown <neilb@suse.de> | 2012-03-19 02:46:39 +0100 |
commit | 050b66152f87c79e8d66aed0e7996f9336462d5f (patch) | |
tree | 44d100c2eadf2a56794e7b526abeb21d1019baa1 /drivers/md/md.c | |
parent | md: add proper merge_bvec handling to RAID0 and Linear. (diff) | |
download | linux-050b66152f87c79e8d66aed0e7996f9336462d5f.tar.xz linux-050b66152f87c79e8d66aed0e7996f9336462d5f.zip |
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.c | 1 |
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) mddev->changed = 0; mddev->degraded = 0; mddev->safemode = 0; + mddev->merge_check_needed = 0; mddev->bitmap_info.offset = 0; mddev->bitmap_info.default_offset = 0; mddev->bitmap_info.chunksize = 0; |