Hi Andrew, Today's linux-next merge of the akpm tree got a conflict in mm/page-writeback.c between commit 6c14ae1e92c7 ("writeback: dirty position control") from the writeback tree and commit "mm/page-writeback.c: make determine_dirtyable_memory static again" from the akpm tree. Just context (I think). I fixed it up (see below) and can carry the fix as necessary. -- Cheers, Stephen Rothwell sfr@xxxxxxxxxxxxxxxx diff --cc mm/page-writeback.c index 325f753,da6d263..0000000 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c @@@ -296,73 -409,6 +355,12 @@@ int bdi_set_max_ratio(struct backing_de } EXPORT_SYMBOL(bdi_set_max_ratio); - /* - * Work out the current dirty-memory clamping and background writeout - * thresholds. - * - * The main aim here is to lower them aggressively if there is a lot of mapped - * memory around. To avoid stressing page reclaim with lots of unreclaimable - * pages. It is better to clamp down on writers than to start swapping, and - * performing lots of scanning. - * - * We only allow 1/2 of the currently-unmapped memory to be dirtied. - * - * We don't permit the clamping level to fall below 5% - that is getting rather - * excessive. - * - * We make sure that the background writeout level is below the adjusted - * clamping level. - */ - - static unsigned long highmem_dirtyable_memory(unsigned long total) - { - #ifdef CONFIG_HIGHMEM - int node; - unsigned long x = 0; - - for_each_node_state(node, N_HIGH_MEMORY) { - struct zone *z = - &NODE_DATA(node)->node_zones[ZONE_HIGHMEM]; - - x += zone_page_state(z, NR_FREE_PAGES) + - zone_reclaimable_pages(z); - } - /* - * Make sure that the number of highmem pages is never larger - * than the number of the total dirtyable memory. This can only - * occur in very strange VM situations but we want to make sure - * that this does not occur. - */ - return min(x, total); - #else - return 0; - #endif - } - - /** - * determine_dirtyable_memory - amount of memory that may be used - * - * Returns the numebr of pages that can currently be freed and used - * by the kernel for direct mappings. - */ - unsigned long determine_dirtyable_memory(void) - { - unsigned long x; - - x = global_page_state(NR_FREE_PAGES) + global_reclaimable_pages(); - - if (!vm_highmem_is_dirtyable) - x -= highmem_dirtyable_memory(x); - - return x + 1; /* Ensure that we never return 0 */ - } - +static unsigned long dirty_freerun_ceiling(unsigned long thresh, + unsigned long bg_thresh) +{ + return (thresh + bg_thresh) / 2; +} + static unsigned long hard_dirty_limit(unsigned long thresh) { return max(thresh, global_dirty_limit);
Attachment:
pgp0XjnQ4bcRK.pgp
Description: PGP signature