mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-11-19 16:14:13 +08:00
mm: fix warning in __set_page_dirty_nobuffers
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-and-tested-by: Dave Jones <davej@redhat.com> Signed-off-by: Hugh Dickins <hughd@google.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
2f9d3df8aa
commit
752dc185da
@ -436,7 +436,10 @@ void migrate_page_copy(struct page *newpage, struct page *page)
|
||||
* 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);
|
||||
|
Loading…
Reference in New Issue
Block a user