[PATCHv2 03/11] drm/i915/gem: Use PG_dropbehind instead of PG_reclaim
From: Kirill A. Shutemov
Date: Wed Jan 15 2025 - 04:33:59 EST
The recently introduced PG_dropbehind allows for freeing folios
immediately after writeback. Unlike PG_reclaim, it does not need vmscan
to be involved to get the folio freed.
Instead of using folio_set_reclaim(), use folio_set_dropbehind() in
__shmem_writeback()
It is safe to leave PG_dropbehind on the folio if, for some reason
(bug?), the folio is not in a writeback state after ->writepage().
In these cases, the kernel had to clear PG_reclaim as it shared a page
flag bit with PG_readahead.
Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
Acked-by: David Hildenbrand <david@xxxxxxxxxx>
---
drivers/gpu/drm/i915/gem/i915_gem_shmem.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
index 9016832b20fc..c1724847c001 100644
--- a/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
+++ b/drivers/gpu/drm/i915/gem/i915_gem_shmem.c
@@ -329,10 +329,8 @@ void __shmem_writeback(size_t size, struct address_space *mapping)
if (!folio_mapped(folio) && folio_clear_dirty_for_io(folio)) {
int ret;
- folio_set_reclaim(folio);
+ folio_set_dropbehind(folio);
ret = mapping->a_ops->writepage(&folio->page, &wbc);
- if (!PageWriteback(page))
- folio_clear_reclaim(folio);
if (!ret)
goto put;
}
--
2.45.2