summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormajianpeng <majianpeng@gmail.com>2013-04-24 01:42:41 (GMT)
committerNeilBrown <neilb@suse.de>2013-04-24 01:42:41 (GMT)
commit6f608040ce6cf37475dd2f6f3c97b009dab7c1d1 (patch)
tree9aac3a9fe0a3090ac1425a95e50565b356d3d585
parent3f810b6c4a850db1b9989cd569ab88b90cd24996 (diff)
downloadlinux-fsl-qoriq-6f608040ce6cf37475dd2f6f3c97b009dab7c1d1.tar.xz
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>
-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 f4e87bf..f31882c 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
*skipped = 1;
return rv;
}
- if (!bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks, 1) &&
- !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) &&
- !conf->fullsync && sync_blocks >= STRIPE_SECTORS) {
+ if (!test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) &&
+ !conf->fullsync &&
+ !bitmap_start_sync(mddev->bitmap, sector_nr, &sync_blocks, 1) &&
+ sync_blocks >= STRIPE_SECTORS) {
/* we can skip this block, and probably more */
sync_blocks /= STRIPE_SECTORS;
*skipped = 1;