From: majianpeng Date: Thu, 28 Feb 2013 07:50:47 +0000 (+0800) Subject: md/raid5: Change or of some order to improve efficiency. X-Git-Tag: next-20130402~51^2~9 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=1ce71785356295b267cc02f1ff4e70fd5612cc55;p=karo-tx-linux.git 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 Signed-off-by: NeilBrown --- diff --git a/drivers/md/raid5.c b/drivers/md/raid5.c index 24909eb13fec..89c549d3ff0f 100644 --- a/drivers/md/raid5.c +++ b/drivers/md/raid5.c @@ -4666,9 +4666,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;