aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/md
diff options
context:
space:
mode:
authormajianpeng <majianpeng@gmail.com>2013-04-23 21:42:41 -0400
committerNeilBrown <neilb@suse.de>2013-04-23 21:42:41 -0400
commit6f608040ce6cf37475dd2f6f3c97b009dab7c1d1 (patch)
tree9aac3a9fe0a3090ac1425a95e50565b356d3d585 /drivers/md
parent3f810b6c4a850db1b9989cd569ab88b90cd24996 (diff)
md/raid5: Change or of some order to improve efficiency.
As the function call is the most expensive of these tests it should be done later in the chain so that it can be avoided in some cases. Signed-off-by: Jianpeng Ma <majianpeng@gmail.com> Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'drivers/md')
-rw-r--r--drivers/md/raid5.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c
index f4e87bfc7567..f31882c1197a 100644
--- a/drivers/md/raid5.c
+++ b/drivers/md/raid5.c
@@ -4672,9 +4672,10 @@ static inline sector_t sync_request(struct mddev *mddev, sector_t sector_nr, int
4672 *skipped = 1; 4672 *skipped = 1;
4673 return rv; 4673 return rv;
4674 } 4674 }
4675 if (!bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks, 1) && 4675 if (!test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) &&
4676 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) && 4676 !conf->fullsync &&
4677 !conf->fullsync && sync_blocks >= STRIPE_SECTORS) { 4677 !bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks, 1) &&
4678 sync_blocks >= STRIPE_SECTORS) {
4678 /* we can skip this block, and probably more */ 4679 /* we can skip this block, and probably more */
4679 sync_blocks /= STRIPE_SECTORS; 4680 sync_blocks /= STRIPE_SECTORS;
4680 *skipped = 1; 4681 *skipped = 1;