On 04/06/2024 13:18, Matthew Wilcox wrote:
On Tue, Jun 04, 2024 at 11:58:24AM +0100, Usama Arif wrote:
+++ b/mm/rmap.c
@@ -1819,96 +1819,101 @@ static bool try_to_unmap_one(struct folio *folio, struct vm_area_struct *vma,
*/
dec_mm_counter(mm, mm_counter(folio));
} else if (folio_test_anon(folio)) {
- swp_entry_t entry = page_swap_entry(subpage);
- pte_t swp_pte;
- /*
- * Store the swap location in the pte.
- * See handle_pte_fault() ...
- */
- if (unlikely(folio_test_swapbacked(folio) !=
- folio_test_swapcache(folio))) {
+ if (flags & TTU_ZERO_FOLIO) {
+ pte_clear(mm, address, pvmw.pte);
+ dec_mm_counter(mm, MM_ANONPAGES);
+ } else {
This is very hard to review. Is what you've done the same as:
if (flags & TTU_ZERO_FOLIO) {
pte_clear(mm, address, pvmw.pte);
dec_mm_counter(mm, MM_ANONPAGES);
goto discard;
}
? I genuinely can't tell.
Yes, thats what I am doing, will switch to above in next revision, Thanks!