From: Greg Kroah-Hartman Date: Tue, 20 Nov 2012 21:08:15 +0000 (-0800) Subject: deleted queue-3.0/tmpfs-change-final-i_blocks-bug-to-warning.patch X-Git-Tag: v3.0.53~23^2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=76c2cb5ffcc55355d246348ff755374aebf80e9e;p=thirdparty%2Fkernel%2Fstable-queue.git deleted queue-3.0/tmpfs-change-final-i_blocks-bug-to-warning.patch --- diff --git a/queue-3.0/series b/queue-3.0/series index 7c5f0f15c09..e0a8d20d106 100644 --- a/queue-3.0/series +++ b/queue-3.0/series @@ -13,7 +13,6 @@ ipv4-avoid-undefined-behavior-in-do_ip_setsockopt.patch ipv6-setsockopt-ipipproto_ipv6-ipv6_minhopcount-forgot-to-set-return-value.patch net-correct-check-in-dev_addr_del.patch net-rps-fix-brokeness-causing-ooo-packets.patch -tmpfs-change-final-i_blocks-bug-to-warning.patch r8169-use-unlimited-dma-burst-for-tx.patch kbuild-fix-gcc-x-syntax.patch netfilter-validate-the-sequence-number-of-dataless-ack-packets-as-well.patch diff --git a/queue-3.0/tmpfs-change-final-i_blocks-bug-to-warning.patch b/queue-3.0/tmpfs-change-final-i_blocks-bug-to-warning.patch deleted file mode 100644 index cfdc42e15aa..00000000000 --- a/queue-3.0/tmpfs-change-final-i_blocks-bug-to-warning.patch +++ /dev/null @@ -1,54 +0,0 @@ -From 0f3c42f522dc1ad7e27affc0a4aa8c790bce0a66 Mon Sep 17 00:00:00 2001 -From: Hugh Dickins -Date: Fri, 16 Nov 2012 14:15:04 -0800 -Subject: tmpfs: change final i_blocks BUG to WARNING -Status: RO -Content-Length: 1912 -Lines: 45 - -From: Hugh Dickins - -commit 0f3c42f522dc1ad7e27affc0a4aa8c790bce0a66 upstream. - -Under a particular load on one machine, I have hit shmem_evict_inode()'s -BUG_ON(inode->i_blocks), enough times to narrow it down to a particular -race between swapout and eviction. - -It comes from the "if (freed > 0)" asymmetry in shmem_recalc_inode(), -and the lack of coherent locking between mapping's nrpages and shmem's -swapped count. There's a window in shmem_writepage(), between lowering -nrpages in shmem_delete_from_page_cache() and then raising swapped -count, when the freed count appears to be +1 when it should be 0, and -then the asymmetry stops it from being corrected with -1 before hitting -the BUG. - -One answer is coherent locking: using tree_lock throughout, without -info->lock; reasonable, but the raw_spin_lock in percpu_counter_add() on -used_blocks makes that messier than expected. Another answer may be a -further effort to eliminate the weird shmem_recalc_inode() altogether, -but previous attempts at that failed. - -So far undecided, but for now change the BUG_ON to WARN_ON: in usual -circumstances it remains a useful consistency check. - -Signed-off-by: Hugh Dickins -Signed-off-by: Andrew Morton -Signed-off-by: Linus Torvalds -Signed-off-by: Greg Kroah-Hartman - - ---- - mm/shmem.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/mm/shmem.c -+++ b/mm/shmem.c -@@ -848,7 +848,7 @@ static void shmem_evict_inode(struct ino - kfree(xattr->name); - kfree(xattr); - } -- BUG_ON(inode->i_blocks); -+ WARN_ON(inode->i_blocks); - shmem_free_inode(inode->i_sb); - end_writeback(inode); - }