int try_to_free_pages(struct zone **zones, unsigned int gfp_mask) 
int try_to_free_pages(struct zone **zones, gfp_t gfp_mask) 
int try_to_free_pages(struct zone **zones, unsigned int gfp_mask){	int priority;	int ret = 0;	int total_scanned = 0, total_reclaimed = 0;	struct reclaim_state *reclaim_state = current->reclaim_state;	struct scan_control sc;	unsigned long lru_pages = 0;	int i;	sc.gfp_mask = gfp_mask;	sc.may_writepage = 0;	sc.may_swap = 1;	inc_page_state(allocstall);	for (i = 0; zones[i] != NULL; i++) {		struct zone *zone = zones[i];		if (!cpuset_zone_allowed(zone, __GFP_HARDWALL))			continue;		zone->temp_priority = DEF_PRIORITY;		lru_pages += zone->nr_active + zone->nr_inactive;	}	for (priority = DEF_PRIORITY; priority >= 0; priority--) {		sc.nr_mapped = read_page_state(nr_mapped);		sc.nr_scanned = 0;		sc.nr_reclaimed = 0;		sc.priority = priority;		sc.swap_cluster_max = SWAP_CLUSTER_MAX;		shrink_caches(zones, &sc);		shrink_slab(sc.nr_scanned, gfp_mask, lru_pages);		if (reclaim_state) {			sc.nr_reclaimed += reclaim_state->reclaimed_slab;			reclaim_state->reclaimed_slab = 0;		}		total_scanned += sc.nr_scanned;		total_reclaimed += sc.nr_reclaimed;		if (total_reclaimed >= sc.swap_cluster_max) {			ret = 1;			goto out;		}		/*		 * Try to write back as many pages as we just scanned.  This		 * tends to cause slow streaming writers to write data to the		 * disk smoothly, at the dirtying rate, which is nice.   But		 * that's undesirable in laptop mode, where we *want* lumpy		 * writeout.  So in laptop mode, write out the whole world.		 */		if (total_scanned > sc.swap_cluster_max + sc.swap_cluster_max/2) {			wakeup_pdflush(laptop_mode ? 0 : total_scanned);			sc.may_writepage = 1;		}		/* Take a nap, wait for some writeback to complete */		if (sc.nr_scanned && priority < DEF_PRIORITY - 2)			blk_congestion_wait(WRITE, HZ/10);	}out:	for (i = 0; zones[i] != 0; i++) {		struct zone *zone = zones[i];		if (!cpuset_zone_allowed(zone, __GFP_HARDWALL))			continue;		zone->prev_priority = zone->temp_priority;	}	return ret;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/6daa0e28627abf362138244a620a821a9027d816/vmscan.c/clean/mm/vmscan.c