[PATCH] percpu: refactor the code in pcpu_[de]populate_chunk()

From: Cong Wang
Date: Tue Dec 01 2009 - 02:11:26 EST


Tejun Heo wrote:
On 12/01/2009 03:35 PM, Cong Wang wrote:
What do you think about the patch below? Untested.

Oh, yeah, that's prettier. Just one thing, can you please move rs
initialization right above the pcpu_next_[un]pop() call? The
input/output parameters for those functions are already pretty
confusing, let's make it at least a bit clearer.


Sure, done.

------------->

Using break statement at the end of a for loop is confusing,
refactor it by replacing the for loop.

Signed-off-by: WANG Cong <amwang@xxxxxxxxxx>

---

diff --git a/mm/percpu.c b/mm/percpu.c
index 5adfc26..2941ed9 100644
--- a/mm/percpu.c
+++ b/mm/percpu.c
@@ -914,11 +914,10 @@ static void pcpu_depopulate_chunk(struct pcpu_chunk *chunk, int off, int size)
int rs, re;

/* quick path, check whether it's empty already */
- pcpu_for_each_unpop_region(chunk, rs, re, page_start, page_end) {
- if (rs == page_start && re == page_end)
- return;
- break;
- }
+ rs = page_start;
+ pcpu_next_unpop(chunk, &rs, &re, page_end);
+ if (rs == page_start && re == page_end)
+ return;

/* immutable chunks can't be depopulated */
WARN_ON(chunk->immutable);
@@ -969,11 +968,10 @@ static int pcpu_populate_chunk(struct pcpu_chunk *chunk, int off, int size)
int rs, re, rc;

/* quick path, check whether all pages are already there */
- pcpu_for_each_pop_region(chunk, rs, re, page_start, page_end) {
- if (rs == page_start && re == page_end)
- goto clear;
- break;
- }
+ rs = page_start;
+ pcpu_next_pop(chunk, &rs, &re, page_end);
+ if (rs == page_start && re == page_end)
+ goto clear;

/* need to allocate and map pages, this chunk can't be immutable */
WARN_ON(chunk->immutable);