Commit 6aeec9a1 authored by Kairui Song's avatar Kairui Song Committed by Andrew Morton
Browse files

mm, swap: simplify the code and reduce indention

Now swap cache is always used, multiple swap cache checks are no longer
useful, remove them and reduce the code indention.

No behavior change.

Link: https://lkml.kernel.org/r/20251220-swap-table-p2-v5-5-8862a265a033@tencent.com


Signed-off-by: default avatarKairui Song <kasong@tencent.com>
Reviewed-by: default avatarBaoquan He <bhe@redhat.com>
Cc: Baolin Wang <baolin.wang@linux.alibaba.com>
Cc: Barry Song <baohua@kernel.org>
Cc: Chris Li <chrisl@kernel.org>
Cc: Nhat Pham <nphamcs@gmail.com>
Cc: Rafael J. Wysocki (Intel) <rafael@kernel.org>
Cc: Yosry Ahmed <yosry.ahmed@linux.dev>
Cc: Deepanshu Kartikey <kartikey406@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Kairui Song <ryncsn@gmail.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent ab08be8d
Loading
Loading
Loading
Loading
+43 −46
Original line number Diff line number Diff line
@@ -4767,7 +4767,6 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
		goto out_release;

	page = folio_file_page(folio, swp_offset(entry));
	if (swapcache) {
	/*
	 * Make sure folio_free_swap() or swapoff did not release the
	 * swapcache from under us.  The page pin, and pte_same test
@@ -4801,8 +4800,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
		ret = VM_FAULT_HWPOISON;
		folio = swapcache;
		goto out_page;
		}
		if (folio != swapcache)
	} else if (folio != swapcache)
		page = folio_page(folio, 0);

	/*
@@ -4811,10 +4809,9 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
	 * owner. Try removing the extra reference from the local LRU
	 * caches if required.
	 */
		if ((vmf->flags & FAULT_FLAG_WRITE) && folio == swapcache &&
	if ((vmf->flags & FAULT_FLAG_WRITE) &&
	    !folio_test_ksm(folio) && !folio_test_lru(folio))
		lru_add_drain();
	}

	folio_throttle_swaprate(folio, GFP_KERNEL);

@@ -5005,7 +5002,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
			pte, pte, nr_pages);

	folio_unlock(folio);
	if (folio != swapcache && swapcache) {
	if (unlikely(folio != swapcache)) {
		/*
		 * Hold the lock to avoid the swap entry to be reused
		 * until we take the PT lock for the pte_same() check
@@ -5043,7 +5040,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf)
	folio_unlock(folio);
out_release:
	folio_put(folio);
	if (folio != swapcache && swapcache) {
	if (folio != swapcache) {
		folio_unlock(swapcache);
		folio_put(swapcache);
	}