From: Greg Kroah-Hartman Date: Thu, 31 Oct 2013 12:23:50 +0000 (-0700) Subject: delete 2 3.10 patches as well: X-Git-Tag: v3.4.68~6 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=c5d331f4792e6d332fd21dc895323fd74c32b981;p=thirdparty%2Fkernel%2Fstable-queue.git delete 2 3.10 patches as well: fs-buffer-move-allocation-failure-loop-into-the-allocator.patch mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state.patch --- diff --git a/queue-3.10/fs-buffer-move-allocation-failure-loop-into-the-allocator.patch b/queue-3.10/fs-buffer-move-allocation-failure-loop-into-the-allocator.patch deleted file mode 100644 index fcc1054b881..00000000000 --- a/queue-3.10/fs-buffer-move-allocation-failure-loop-into-the-allocator.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 84235de394d9775bfaa7fa9762a59d91fef0c1fc Mon Sep 17 00:00:00 2001 -From: Johannes Weiner -Date: Wed, 16 Oct 2013 13:47:00 -0700 -Subject: fs: buffer: move allocation failure loop into the allocator - -From: Johannes Weiner - -commit 84235de394d9775bfaa7fa9762a59d91fef0c1fc upstream. - -Buffer allocation has a very crude indefinite loop around waking the -flusher threads and performing global NOFS direct reclaim because it can -not handle allocation failures. - -The most immediate problem with this is that the allocation may fail due -to a memory cgroup limit, where flushers + direct reclaim might not make -any progress towards resolving the situation at all. Because unlike the -global case, a memory cgroup may not have any cache at all, only -anonymous pages but no swap. This situation will lead to a reclaim -livelock with insane IO from waking the flushers and thrashing unrelated -filesystem cache in a tight loop. - -Use __GFP_NOFAIL allocations for buffers for now. This makes sure that -any looping happens in the page allocator, which knows how to -orchestrate kswapd, direct reclaim, and the flushers sensibly. It also -allows memory cgroups to detect allocations that can't handle failure -and will allow them to ultimately bypass the limit if reclaim can not -make progress. - -Reported-by: azurIt -Signed-off-by: Johannes Weiner -Cc: Michal Hocko -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Greg Kroah-Hartman - ---- - fs/buffer.c | 14 ++++++++++++-- - mm/memcontrol.c | 2 ++ - 2 files changed, 14 insertions(+), 2 deletions(-) - ---- a/fs/buffer.c -+++ b/fs/buffer.c -@@ -971,9 +971,19 @@ grow_dev_page(struct block_device *bdev, - struct buffer_head *bh; - sector_t end_block; - int ret = 0; /* Will call free_more_memory() */ -+ gfp_t gfp_mask; - -- page = find_or_create_page(inode->i_mapping, index, -- (mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS)|__GFP_MOVABLE); -+ gfp_mask = mapping_gfp_mask(inode->i_mapping) & ~__GFP_FS; -+ gfp_mask |= __GFP_MOVABLE; -+ /* -+ * XXX: __getblk_slow() can not really deal with failure and -+ * will endlessly loop on improvised global reclaim. Prefer -+ * looping in the allocator rather than here, at least that -+ * code knows what it's doing. -+ */ -+ gfp_mask |= __GFP_NOFAIL; -+ -+ page = find_or_create_page(inode->i_mapping, index, gfp_mask); - if (!page) - return ret; - ---- a/mm/memcontrol.c -+++ b/mm/memcontrol.c -@@ -2771,6 +2771,8 @@ done: - return 0; - nomem: - *ptr = NULL; -+ if (gfp_mask & __GFP_NOFAIL) -+ return 0; - return -ENOMEM; - bypass: - *ptr = root_mem_cgroup; diff --git a/queue-3.10/mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state.patch b/queue-3.10/mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state.patch deleted file mode 100644 index 41b7f57e147..00000000000 --- a/queue-3.10/mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state.patch +++ /dev/null @@ -1,80 +0,0 @@ -From c3d16e16522fe3fe8759735850a0676da18f4b1d Mon Sep 17 00:00:00 2001 -From: Cyrill Gorcunov -Date: Wed, 16 Oct 2013 13:46:51 -0700 -Subject: mm: migration: do not lose soft dirty bit if page is in migration state - -From: Cyrill Gorcunov - -commit c3d16e16522fe3fe8759735850a0676da18f4b1d upstream. - -If page migration is turned on in config and the page is migrating, we -may lose the soft dirty bit. If fork and mprotect are called on -migrating pages (once migration is complete) pages do not obtain the -soft dirty bit in the correspond pte entries. Fix it adding an -appropriate test on swap entries. - -Signed-off-by: Cyrill Gorcunov -Cc: Pavel Emelyanov -Cc: Andy Lutomirski -Cc: Matt Mackall -Cc: Xiao Guangrong -Cc: Marcelo Tosatti -Cc: KOSAKI Motohiro -Cc: Stephen Rothwell -Cc: Peter Zijlstra -Cc: "Aneesh Kumar K.V" -Cc: Naoya Horiguchi -Cc: Mel Gorman -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Greg Kroah-Hartman - ---- - mm/memory.c | 2 ++ - mm/migrate.c | 2 ++ - mm/mprotect.c | 7 +++++-- - 3 files changed, 9 insertions(+), 2 deletions(-) - ---- a/mm/memory.c -+++ b/mm/memory.c -@@ -863,6 +863,8 @@ copy_one_pte(struct mm_struct *dst_mm, s - */ - make_migration_entry_read(&entry); - pte = swp_entry_to_pte(entry); -+ if (pte_swp_soft_dirty(*src_pte)) -+ pte = pte_swp_mksoft_dirty(pte); - set_pte_at(src_mm, addr, src_pte, pte); - } - } ---- a/mm/migrate.c -+++ b/mm/migrate.c -@@ -157,6 +157,8 @@ static int remove_migration_pte(struct p - - get_page(new); - pte = pte_mkold(mk_pte(new, vma->vm_page_prot)); -+ if (pte_swp_soft_dirty(*ptep)) -+ pte = pte_mksoft_dirty(pte); - if (is_write_migration_entry(entry)) - pte = pte_mkwrite(pte); - #ifdef CONFIG_HUGETLB_PAGE ---- a/mm/mprotect.c -+++ b/mm/mprotect.c -@@ -94,13 +94,16 @@ static unsigned long change_pte_range(st - swp_entry_t entry = pte_to_swp_entry(oldpte); - - if (is_write_migration_entry(entry)) { -+ pte_t newpte; - /* - * A protection check is difficult so - * just be safe and disable write - */ - make_migration_entry_read(&entry); -- set_pte_at(mm, addr, pte, -- swp_entry_to_pte(entry)); -+ newpte = swp_entry_to_pte(entry); -+ if (pte_swp_soft_dirty(oldpte)) -+ newpte = pte_swp_mksoft_dirty(newpte); -+ set_pte_at(mm, addr, pte, newpte); - } - pages++; - } diff --git a/queue-3.10/series b/queue-3.10/series index 06caafebff4..924c2f57c4a 100644 --- a/queue-3.10/series +++ b/queue-3.10/series @@ -43,10 +43,8 @@ arm-integrator-deactivate-timer0-on-the-integrator-cp.patch gpio-lynxpoint-check-if-the-interrupt-is-enabled-in-irq-handler.patch dm-snapshot-fix-data-corruption.patch i2c-ismt-initialize-dma-buffer.patch -mm-migration-do-not-lose-soft-dirty-bit-if-page-is-in-migration-state.patch mm-fix-bug-in-__split_huge_page_pmd.patch alsa-us122l-fix-pcm_usb_stream-mmapping-regression.patch alsa-hda-fix-inverted-internal-mic-not-indicated-on-some-machines.patch writeback-fix-negative-bdi-max-pause.patch wireless-radiotap-fix-parsing-buffer-overrun.patch -fs-buffer-move-allocation-failure-loop-into-the-allocator.patch