The patch titled Subject: revert "Revert "mm: remove __GFP_NO_KSWAPD"" has been added to the -mm tree. Its filename is revert-revert-mm-remove-__gfp_no_kswapd.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> Subject: revert "Revert "mm: remove __GFP_NO_KSWAPD"" It apepars that this patch was innocent, and we hope that "mm: avoid waking kswapd for THP allocations when compaction is deferred or contended" will fix the final kswapd-spinning cause. Cc: Zdenek Kabelac <zkabelac@xxxxxxxxxx> Cc: Seth Jennings <sjenning@xxxxxxxxxxxxxxxxxx> Cc: Valdis Kletnieks <Valdis.Kletnieks@xxxxxx> Cc: Jiri Slaby <jirislaby@xxxxxxxxx> Cc: Rik van Riel <riel@xxxxxxxxxx> Cc: Robert Jennings <rcj@xxxxxxxxxxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- drivers/mtd/mtdcore.c | 6 ++---- include/linux/gfp.h | 5 +---- include/trace/events/gfpflags.h | 1 - mm/page_alloc.c | 7 +++---- 4 files changed, 6 insertions(+), 13 deletions(-) diff -puN drivers/mtd/mtdcore.c~revert-revert-mm-remove-__gfp_no_kswapd drivers/mtd/mtdcore.c --- a/drivers/mtd/mtdcore.c~revert-revert-mm-remove-__gfp_no_kswapd +++ a/drivers/mtd/mtdcore.c @@ -1077,8 +1077,7 @@ EXPORT_SYMBOL_GPL(mtd_writev); * until the request succeeds or until the allocation size falls below * the system page size. This attempts to make sure it does not adversely * impact system performance, so when allocating more than one page, we - * ask the memory allocator to avoid re-trying, swapping, writing back - * or performing I/O. + * ask the memory allocator to avoid re-trying. * * Note, this function also makes sure that the allocated buffer is aligned to * the MTD device's min. I/O unit, i.e. the "mtd->writesize" value. @@ -1092,8 +1091,7 @@ EXPORT_SYMBOL_GPL(mtd_writev); */ void *mtd_kmalloc_up_to(const struct mtd_info *mtd, size_t *size) { - gfp_t flags = __GFP_NOWARN | __GFP_WAIT | - __GFP_NORETRY | __GFP_NO_KSWAPD; + gfp_t flags = __GFP_NOWARN | __GFP_WAIT | __GFP_NORETRY; size_t min_alloc = max_t(size_t, mtd->writesize, PAGE_SIZE); void *kbuf; diff -puN include/linux/gfp.h~revert-revert-mm-remove-__gfp_no_kswapd include/linux/gfp.h --- a/include/linux/gfp.h~revert-revert-mm-remove-__gfp_no_kswapd +++ a/include/linux/gfp.h @@ -31,7 +31,6 @@ struct vm_area_struct; #define ___GFP_THISNODE 0x40000u #define ___GFP_RECLAIMABLE 0x80000u #define ___GFP_NOTRACK 0x200000u -#define ___GFP_NO_KSWAPD 0x400000u #define ___GFP_OTHER_NODE 0x800000u #define ___GFP_WRITE 0x1000000u @@ -86,7 +85,6 @@ struct vm_area_struct; #define __GFP_RECLAIMABLE ((__force gfp_t)___GFP_RECLAIMABLE) /* Page is reclaimable */ #define __GFP_NOTRACK ((__force gfp_t)___GFP_NOTRACK) /* Don't track with kmemcheck */ -#define __GFP_NO_KSWAPD ((__force gfp_t)___GFP_NO_KSWAPD) #define __GFP_OTHER_NODE ((__force gfp_t)___GFP_OTHER_NODE) /* On behalf of other node */ #define __GFP_WRITE ((__force gfp_t)___GFP_WRITE) /* Allocator intends to dirty page */ @@ -116,8 +114,7 @@ struct vm_area_struct; __GFP_MOVABLE) #define GFP_IOFS (__GFP_IO | __GFP_FS) #define GFP_TRANSHUGE (GFP_HIGHUSER_MOVABLE | __GFP_COMP | \ - __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN | \ - __GFP_NO_KSWAPD) + __GFP_NOMEMALLOC | __GFP_NORETRY | __GFP_NOWARN) #ifdef CONFIG_NUMA #define GFP_THISNODE (__GFP_THISNODE | __GFP_NOWARN | __GFP_NORETRY) diff -puN include/trace/events/gfpflags.h~revert-revert-mm-remove-__gfp_no_kswapd include/trace/events/gfpflags.h --- a/include/trace/events/gfpflags.h~revert-revert-mm-remove-__gfp_no_kswapd +++ a/include/trace/events/gfpflags.h @@ -36,7 +36,6 @@ {(unsigned long)__GFP_RECLAIMABLE, "GFP_RECLAIMABLE"}, \ {(unsigned long)__GFP_MOVABLE, "GFP_MOVABLE"}, \ {(unsigned long)__GFP_NOTRACK, "GFP_NOTRACK"}, \ - {(unsigned long)__GFP_NO_KSWAPD, "GFP_NO_KSWAPD"}, \ {(unsigned long)__GFP_OTHER_NODE, "GFP_OTHER_NODE"} \ ) : "GFP_NOWAIT" diff -puN mm/page_alloc.c~revert-revert-mm-remove-__gfp_no_kswapd mm/page_alloc.c --- a/mm/page_alloc.c~revert-revert-mm-remove-__gfp_no_kswapd +++ a/mm/page_alloc.c @@ -2416,9 +2416,8 @@ __alloc_pages_slowpath(gfp_t gfp_mask, u goto nopage; restart: - if (!(gfp_mask & __GFP_NO_KSWAPD)) - wake_all_kswapd(order, zonelist, high_zoneidx, - zone_idx(preferred_zone)); + wake_all_kswapd(order, zonelist, high_zoneidx, + zone_idx(preferred_zone)); /* * OK, we're below the kswapd watermark and have kicked background @@ -2495,7 +2494,7 @@ rebalance: * system then fail the allocation instead of entering direct reclaim. */ if ((deferred_compaction || contended_compaction) && - (gfp_mask & __GFP_NO_KSWAPD)) + (gfp_mask & (__GFP_MOVABLE|__GFP_REPEAT)) == __GFP_MOVABLE) goto nopage; /* Try direct reclaim and then allocating */ _ Patches currently in -mm which might be from akpm@xxxxxxxxxxxxxxxxxxxx are origin.patch revert-revert-mm-remove-__gfp_no_kswapd.patch linux-next.patch linux-next-git-rejects.patch i-need-old-gcc.patch arch-alpha-kernel-systblss-remove-debug-check.patch arch-x86-platform-iris-irisc-register-a-platform-device-and-a-platform-driver.patch arch-x86-tools-insn_sanityc-identify-source-of-messages.patch drivers-video-add-support-for-the-solomon-ssd1307-oled-controller-checkpatch-fixes.patch irq-tsk-comm-is-an-array.patch drivers-tty-serial-serial_corec-fix-uart_get_attr_port-shift.patch mm.patch mm-introduce-mm_find_pmd-fix.patch memory-hotplug-update-mce_bad_pages-when-removing-the-memory-fix.patch slub-hotplug-ignore-unrelated-nodes-hot-adding-and-hot-removing.patch mmvmscan-only-evict-file-pages-when-we-have-plenty-fix.patch slub-slub-specific-propagation-changes-fix.patch dmapool-make-dmapool_debug-detect-corruption-of-free-marker-fix.patch mm-support-more-pagesizes-for-map_hugetlb-shm_hugetlb-v7-fix.patch mm-support-more-pagesizes-for-map_hugetlb-shm_hugetlb-v7-fix-fix.patch mm-support-more-pagesizes-for-map_hugetlb-shm_hugetlb-v7-fix-fix-fix-fix-checkpatch-fixes.patch mm-check-rb_subtree_gap-correctness-fix.patch mm-rearrange-vm_area_struct-for-fewer-cache-misses-checkpatch-fixes.patch mm-vm_unmapped_area-lookup-function-checkpatch-fixes.patch mm-use-vm_unmapped_area-in-hugetlbfs-on-i386-architecture-fix.patch mm-use-vm_unmapped_area-on-mips-architecture-fix.patch mm-use-vm_unmapped_area-on-arm-architecture-fix.patch mm-use-vm_unmapped_area-on-arm-architecture-fix-fix.patch mm-use-vm_unmapped_area-on-sh-architecture-fix.patch mm-use-vm_unmapped_area-on-sparc32-architecture-fix.patch mm-use-vm_unmapped_area-on-sparc32-architecture-fix-fix.patch mm-use-vm_unmapped_area-in-hugetlbfs-on-tile-architecture-fix.patch mm-use-vm_unmapped_area-on-sparc64-architecture-fix.patch arch-sparc-kernel-sys_sparc_64c-s-colour-color.patch virtio_balloon-introduce-migration-primitives-to-balloon-pages-fix-fix.patch virtio_balloon-introduce-migration-primitives-to-balloon-pages-fix-fix-fix.patch mm-cma-skip-watermarks-check-for-already-isolated-blocks-in-split_free_page-fix-fix.patch bootmem-fix-wrong-call-parameter-for-free_bootmem-fix.patch mm-memory-hotplug-dynamic-configure-movable-memory-and-portion-memory-fix.patch thp-implement-splitting-pmd-for-huge-zero-page-fix.patch mm-add-a-reminder-comment-for-__gfp_bits_shift.patch numa-add-config_movable_node-for-movable-dedicated-node-fix.patch mm-introduce-new-field-managed_pages-to-struct-zone-fix.patch mm-provide-more-accurate-estimation-of-pages-occupied-by-memmap-fix.patch drop_caches-add-some-documentation-and-info-messsge-checkpatch-fixes.patch swap-add-a-simple-detector-for-inappropriate-swapin-readahead-fix.patch scripts-pnmtologo-fix-for-plain-pbm-checkpatch-fixes.patch drivers-video-backlight-lp855x_blc-use-generic-pwm-functions-fix.patch backlight-add-of_find_backlight_by_node-function-fix.patch backlight-88pm860x_bl-remove-an-unnecessary-line-continuation-fix.patch drivers-firmware-dmi_scanc-check-dmi-version-when-get-system-uuid-fix.patch drivers-firmware-dmi_scanc-fetch-dmi-version-from-smbios-if-it-exists-checkpatch-fixes.patch binfmt_elf-fix-corner-case-kfree-of-uninitialized-data-checkpatch-fixes.patch binfmt_elfc-use-get_random_int-to-fix-entropy-depleting.patch rtc-avoid-calling-platform_device_put-twice-in-test_init-fix.patch hfsplus-add-osx-prefix-for-handling-namespace-of-mac-os-x-extended-attributes-checkpatch-fixes.patch procfs-add-vmflags-field-in-smaps-output-v4.patch procfs-add-vmflags-field-in-smaps-output-v4-fix.patch ipc-add-sysctl-to-specify-desired-next-object-id-checkpatch-fixes.patch ipc-message-queue-receive-cleanup-checkpatch-fixes.patch ipc-convert-prepare_copy-from-macro-to-function-fix.patch dma-debug-new-interfaces-to-debug-dma-mapping-errors-fix-fix.patch docs-add-documentation-about-proc-pid-fdinfo-fd-output-fix.patch fs-notify-add-procfs-fdinfo-helper-v7-fix.patch scatterlist-dont-bug-when-we-can-trivially-return-a-proper-error-fix.patch journal_add_journal_head-debug.patch kernel-forkc-export-kernel_thread-to-modules.patch mutex-subsystem-synchro-test-module-fix.patch slab-leaks3-default-y.patch put_bh-debug.patch mm-avoid-waking-kswapd-for-thp-allocations-when-compaction-is-deferred-or-contended-fix.patch -- To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html