linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Hugh Dickins <hughd@google.com>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Markus Trippelsdorf <markus@trippelsdorf.de>,
	Dave Jones <davej@redhat.com>,
	Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
	Kyungmin Park <kyungmin.park@samsung.com>,
	Marek Szyprowski <m.szyprowski@samsung.com>,
	Mel Gorman <mgorman@suse.de>, Minchan Kim <minchan@kernel.org>,
	Rik van Riel <riel@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Cong Wang <amwang@redhat.com>,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: [PATCH] mm: fix warning in __set_page_dirty_nobuffers
Date: Sat, 2 Jun 2012 00:27:47 -0700 (PDT)	[thread overview]
Message-ID: <alpine.LSU.2.00.1206020023340.1376@eggly.anvils> (raw)
In-Reply-To: <alpine.LSU.2.00.1206020021280.1376@eggly.anvils>

New tmpfs use of !PageUptodate pages for fallocate() is triggering the
WARNING: at mm/page-writeback.c:1990 when __set_page_dirty_nobuffers()
is called from migrate_page_copy() for compaction.

It is anomalous that migration should use __set_page_dirty_nobuffers()
on an address_space that does not participate in dirty and writeback
accounting; and this has also been observed to insert surprising dirty
tags into a tmpfs radix_tree, despite tmpfs not using tags at all.

We should probably give migrate_page_copy() a better way to preserve
the tag and migrate accounting info, when mapping_cap_account_dirty().
But that needs some more work: so in the interim, avoid the warning
by using a simple SetPageDirty on PageSwapBacked pages.

Reported-by: Dave Jones <davej@redhat.com>
Signed-off-by: Hugh Dickins <hughd@google.com>
---

 mm/migrate.c |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

--- 3.4.0+/mm/migrate.c	2012-05-27 10:01:43.104049010 -0700
+++ linux/mm/migrate.c	2012-06-01 00:10:58.080098749 -0700
@@ -436,7 +436,10 @@ void migrate_page_copy(struct page *newp
 		 * is actually a signal that all of the page has become dirty.
 		 * Whereas only part of our page may be dirty.
 		 */
-		__set_page_dirty_nobuffers(newpage);
+		if (PageSwapBacked(page))
+			SetPageDirty(newpage);
+		else
+			__set_page_dirty_nobuffers(newpage);
  	}
 
 	mlock_migrate_page(newpage, page);

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

  reply	other threads:[~2012-06-02  7:28 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-05-30 16:33 WARNING: at mm/page-writeback.c:1990 __set_page_dirty_nobuffers+0x13a/0x170() Dave Jones
2012-05-31  0:57 ` Dave Jones
2012-06-01  2:31   ` Dave Jones
2012-06-01  2:43     ` Linus Torvalds
2012-06-01 13:43       ` Dave Jones
2012-06-01  8:44     ` Hugh Dickins
2012-06-01  8:51       ` KOSAKI Motohiro
2012-06-01  9:08         ` Hugh Dickins
2012-06-01  9:12           ` KOSAKI Motohiro
2012-06-01 14:09       ` Dave Jones
2012-06-01 14:14       ` Dave Jones
2012-06-01 16:12       ` Dave Jones
2012-06-01 17:16         ` Dave Jones
2012-06-01 22:17           ` Hugh Dickins
2012-06-02  1:45             ` Linus Torvalds
2012-06-02  4:40               ` Hugh Dickins
2012-06-02  4:58                 ` Linus Torvalds
2012-06-02  7:20                   ` Hugh Dickins
2012-06-02  7:17                 ` Markus Trippelsdorf
2012-06-02  7:22                   ` Hugh Dickins
2012-06-02  7:27                     ` Hugh Dickins [this message]
2012-06-03 18:15                 ` Dave Jones
2012-06-03 18:23                   ` Linus Torvalds
2012-06-03 18:31                     ` Dave Jones
2012-06-03 20:53                       ` Dave Jones
2012-06-03 21:59                         ` Linus Torvalds
2012-06-03 22:13                           ` Dave Jones
2012-06-03 22:29                           ` Hugh Dickins
2012-06-03 22:17                         ` Hugh Dickins
2012-06-03 23:13                           ` Linus Torvalds
2012-06-04  0:46                             ` KOSAKI Motohiro
2012-06-04  1:18                             ` Hugh Dickins
2012-06-04  1:21                             ` Minchan Kim
2012-06-04  1:26                               ` KOSAKI Motohiro
2012-06-04  2:30                                 ` Minchan Kim
2012-06-04  1:10                 ` Minchan Kim
2012-06-04  1:41                   ` Hugh Dickins
2012-06-04  1:47                     ` KOSAKI Motohiro
2012-06-04  2:28                     ` Minchan Kim
2012-06-04  4:21                       ` KOSAKI Motohiro
2012-06-04 13:37                       ` Bartlomiej Zolnierkiewicz
2012-06-01 16:16       ` Markus Trippelsdorf
2012-06-01 16:28         ` Linus Torvalds
2012-06-01 16:39           ` Markus Trippelsdorf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.LSU.2.00.1206020023340.1376@eggly.anvils \
    --to=hughd@google.com \
    --cc=akpm@linux-foundation.org \
    --cc=amwang@redhat.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=davej@redhat.com \
    --cc=kyungmin.park@samsung.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=m.szyprowski@samsung.com \
    --cc=markus@trippelsdorf.de \
    --cc=mgorman@suse.de \
    --cc=minchan@kernel.org \
    --cc=riel@redhat.com \
    --cc=torvalds@linux-foundation.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox