mm: Account dirty folios properly during splits
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 29 Jun 2022 00:15:29 +0000 (20:15 -0400)
committerMatthew Wilcox (Oracle) <willy@infradead.org>
Wed, 29 Jun 2022 12:49:43 +0000 (08:49 -0400)
commitfb5c2029f8221e904e604938171c4a8ef169aadb
tree2fffeceec685ebba8d5fbd83d5d89b3b605e189b
parent0840a7914caa14315a3191178a9f72c742477860
mm: Account dirty folios properly during splits

If the last folio in a file is split as a result of truncation,
we simply clear the dirty bits for the pages we're discarding.
That causes NR_FILE_DIRTY (among other counters) to be thrown off
and eventually Linux will hang in balance_dirty_pages_ratelimited()

Reported-by: Dave Chinner <dchinner@redhat.com>
Tested-by: Dave Chinner <dchinner@redhat.com>
Tested-by: Darrick J. Wong <djwong@kernel.org>
Fixes: d68eccad3706 ("mm/filemap: Allow large folios to be added to the page cache")
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
mm/huge_memory.c