Hello, since we are slowly getting into a state where folios used as buffers for [R]DMA are detectable by folio_maybe_dma_pinned(), I figured it is time we also address the original problems filesystems had with these pages [1] - namely that page/folio private data can get reclaimed from the page while it is being written to by the DMA and also that page contents can be modified while the page is under writeback. This patch series is kind of an outline how the solution could look like (so far only compile tested). The first two patches deal with the reclaim of page private data for pinned pages. They are IMO no-brainers and actually deal with 99% of the observed issues so we might just separate them and merge them earlier. The remainder of the series deals with the concern that page contents can be modified while the page is being written back. What it implements is that instead we skip page cleaning writeback for pinned pages and if we cannot avoid writing the page (data integrity writeback), we bite the bullet and bounce the page. Note that the conversion of clear_page_dirty_for_io() (and its folio variant) is kind of rough and providing wbc to the function only in the obvious cases - that will need a bit more work but OTOH functionally passing NULL just retains the old behavior + WARNs if we actually see pinned page in the writeback path. Opinions? Honza [1] https://lore.kernel.org/linux-mm/20180103100430.GE4911@xxxxxxxxxxxxxx