The patch titled Subject: mm-vmscan-check-for-fatal-signals-iff-the-process-was-throttled-fix has been added to the -mm tree. Its filename is mm-vmscan-check-for-fatal-signals-iff-the-process-was-throttled-fix.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: mm-vmscan-check-for-fatal-signals-iff-the-process-was-throttled-fix fix early-return retval, tidy a few things Cc: Dan Magenheimer <dan.magenheimer@xxxxxxxxxx> Cc: David Rientjes <rientjes@xxxxxxxxxx> Cc: KOSAKI Motohiro <kosaki.motohiro@xxxxxxxxxxxxxx> Cc: Luigi Semenzato <semenzato@xxxxxxxxxx> Cc: Mel Gorman <mgorman@xxxxxxx> Cc: Minchan Kim <minchan@xxxxxxxxxx> Cc: Sonny Rao <sonnyrao@xxxxxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/vmscan.c | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) diff -puN mm/vmscan.c~mm-vmscan-check-for-fatal-signals-iff-the-process-was-throttled-fix mm/vmscan.c --- a/mm/vmscan.c~mm-vmscan-check-for-fatal-signals-iff-the-process-was-throttled-fix +++ a/mm/vmscan.c @@ -2209,7 +2209,7 @@ static bool pfmemalloc_watermark_ok(pg_d * depleted. kswapd will continue to make progress and wake the processes * when the low watermark is reached. * - * Returns true if a fatal signal was delivered during throttling. If this + * Returns true if a fatal signal was received during throttling. If this * happens, the page allocator should not consider triggering the OOM killer. */ static bool throttle_direct_reclaim(gfp_t gfp_mask, struct zonelist *zonelist, @@ -2223,24 +2223,24 @@ static bool throttle_direct_reclaim(gfp_ * Kernel threads should not be throttled as they may be indirectly * responsible for cleaning pages necessary for reclaim to make forward * progress. kjournald for example may enter direct reclaim while - * committing a transaction where throttling it could forcing other + * committing a transaction where throttling it could force other * processes to block on log_wait_commit(). */ if (current->flags & PF_KTHREAD) - goto out; + return false; /* * If a fatal signal is pending, this process should not throttle. * It should return quickly so it can exit and free its memory */ if (fatal_signal_pending(current)) - goto out; + return true; /* Check if the pfmemalloc reserves are ok */ first_zones_zonelist(zonelist, high_zoneidx, NULL, &zone); pgdat = zone->zone_pgdat; if (pfmemalloc_watermark_ok(pgdat)) - goto out; + return false; /* Account for the throttling */ count_vm_event(PGSCAN_DIRECT_THROTTLE); @@ -2255,21 +2255,14 @@ static bool throttle_direct_reclaim(gfp_ */ if (!(gfp_mask & __GFP_FS)) { wait_event_interruptible_timeout(pgdat->pfmemalloc_wait, - pfmemalloc_watermark_ok(pgdat), HZ); - - goto check_pending; + pfmemalloc_watermark_ok(pgdat), HZ); + } else { + /* Throttle until kswapd wakes the process */ + wait_event_killable(zone->zone_pgdat->pfmemalloc_wait, + pfmemalloc_watermark_ok(pgdat)); } - /* Throttle until kswapd wakes the process */ - wait_event_killable(zone->zone_pgdat->pfmemalloc_wait, - pfmemalloc_watermark_ok(pgdat)); - -check_pending: - if (fatal_signal_pending(current)) - return true; - -out: - return false; + return fatal_signal_pending(current); } unsigned long try_to_free_pages(struct zonelist *zonelist, int order, @@ -2292,7 +2285,7 @@ unsigned long try_to_free_pages(struct z }; /* - * Do not enter reclaim if fatal signal was delivered while throttled. + * Do not enter reclaim if a fatal signal was received while throttled. * 1 is returned so that the page allocator does not OOM kill at this * point. */ _ Patches currently in -mm which might be from akpm@xxxxxxxxxxxxxxxxxxxx are origin.patch linux-next.patch linux-next-git-rejects.patch i-need-old-gcc.patch arch-alpha-kernel-systblss-remove-debug-check.patch mm-vmscan-check-for-fatal-signals-iff-the-process-was-throttled-fix.patch mm-export-a-function-to-get-vm-committed-memory.patch cpu_hotplug-unmap-cpu2node-when-the-cpu-is-hotremoved-fix.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 bootmem-fix-wrong-call-parameter-for-free_bootmem-fix.patch mm-memory-hotplug-dynamic-configure-movable-memory-and-portion-memory-fix.patch mm-add-a-reminder-comment-for-__gfp_bits_shift.patch numa-add-config_movable_node-for-movable-dedicated-node-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-support-of-manipulation-by-attributes-file-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 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 -- 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