On Tue, Nov 13, 2018 at 04:04:36PM +0800, Wei Yang wrote: > This patch fix the return value by adjusting to NODE_RECLAIM_NOSCAN. Since > node_reclaim() is only called in page_alloc.c, move it to mm/internal.h. linux/swap.h is included in quite a few places in the kernel, but let's see what's really used from it outside mm/ SWAP_FLAG* -- only used in mm/swapfile.c. Move to swapfile.c? current_is_kswapd() -- used by some drivers. MAX_SWAPFILES* -- used by arch code. union swap_header -- used by mtdswap. struct reclaim_state -- used by fs/inode.c. struct swap_extent -- embedded in swap_info_struct, which is used widely. struct swap_cluster_info -- ditto struct vma_swap_readahead -- only used in swap_state.c. Move it there? nr_free_pages() -- used in fs/ and kernel/power/swap.c totalram_pages -- used widely totalreserve_pages -- used widely vm_swappiness -- used by sysctl vm_total_pages -- only used in mm -- move to mm/internal.h? node_reclaim_mode -- used by sysctl kswapd_run -- only used in mm kswapd_stop -- ditto swap_address_space -- only used in mm swapper_spaces -- likewise SWAP_ADDRESS_SPACE* --likewise I haven't covered all of the file, but there's definitely opportunity for some followup patches to shrink linux/swap.h.