From b9ee20a722957f2ec829d053ae6baeae96888ac8 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Mon, 28 Nov 2005 13:44:09 -0800 Subject: [PATCH] --- yaml --- r: 14730 b: refs/heads/master c: 22dfdf5212e5864b844f629736fb993d4611f190 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/md/raid10.c | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 50a512b4990b..73490a9f12e5 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 20c5ab6821b3a7aad31fb5a4660e9fe414fb37f6 +refs/heads/master: 22dfdf5212e5864b844f629736fb993d4611f190 diff --git a/trunk/drivers/md/raid10.c b/trunk/drivers/md/raid10.c index 867f06ae33d9..713dc9c2c730 100644 --- a/trunk/drivers/md/raid10.c +++ b/trunk/drivers/md/raid10.c @@ -552,7 +552,11 @@ static int read_balance(conf_t *conf, r10bio_t *r10_bio) !test_bit(In_sync, &rdev->flags)) continue; - if (!atomic_read(&rdev->nr_pending)) { + /* This optimisation is debatable, and completely destroys + * sequential read speed for 'far copies' arrays. So only + * keep it for 'near' arrays, and review those later. + */ + if (conf->near_copies > 1 && !atomic_read(&rdev->nr_pending)) { disk = ndisk; slot = nslot; break;