+int coalesce_memory(unsigned int order, struct zone *zone)<snip>
+{
+ while (entry != &area->free_list) {
+ int ret;
+ page = list_entry(entry, struct page, lru);
+ entry = entry->next;
+
+ pwalk = page;..................
+
+ /* Look backwards */
+
+ for (walkcount = 1; walkcount<nr_pages; walkcount++) {
+ }+ } else {
+
+forward:+ }
+
+ pwalk = page;
+
+ /* Look forward, skipping the page frames from this + high order page we are looking at */
+
+ for (walkcount = (1UL << torder); walkcount<nr_pages; + walkcount++) {
+ pwalk = page+walkcount;
+
+ ret = can_move_page(pwalk);
+
+ if (ret) + nr_freed_pages++;
+ else
+ goto loopey;
+
+ if (nr_freed_pages == nr_pages)
+ goto success;
+ }
+