ext4: simplify some logic in ext4_mb_normalize_request
PATCH 1/1 ext4: simplify some logic in ext4_mb_normalize_request
While reading through some of the mballoc code it seems that a couple spots in the size normalization function could be streamlined.
The test for non-overlapping PAs can be or'd for the start & end conditions, and the tests for adjacent PAs can be else-if'd - it's essentially independently testing:
if (A + B <= C) ... if (A > C) ...
These cannot both be true so it seems like the else-if might be slightly more efficient and/or informative.
Signed-off-by Eric Sandeen <[email protected]>
---
mballoc.c | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-)
fs/ext4/mballoc.c +3 -7
@@ -3171,23 +3171,18 @@ ext4_mb_normalize_request(struct ext4_allocation_context *ac,BUG_ON (!(ac->ac_o_ex.fe_logical >= pa_end || ac->ac_o_ex.fe_logical < pa->pa_lstart)); -/* skip PA normalized request doesn't overlap with */ -if (pa->pa_lstart >= end) { -spin_unlock (&pa->pa_lock); -continue ; - } -if (pa_end <= start) { +/* skip PAs this normalized request doesn't overlap with */ +if (pa->pa_lstart >= end || pa_end <= start) {spin_unlock (&pa->pa_lock);continue ; }BUG_ON (pa->pa_lstart <= start && pa_end >= end); +/* adjust start or end to be adjacent to this pa */ if (pa_end <= ac->ac_o_ex.fe_logical) {BUG_ON (pa_end < start); start = pa_end; - }
Theodore Tso
maintainerThanks, added to the ext4 patch queue.
- Ted