Re: [PATCH v3 1/8] mm: Remove special swap entry functions

From: Jason Gunthorpe
Date: Mon Mar 01 2021 - 18:05:23 EST


On Fri, Feb 26, 2021 at 06:18:25PM +1100, Alistair Popple wrote:
> Remove the migration and device private entry_to_page() and
> entry_to_pfn() inline functions and instead open code them directly.
> This results in shorter code which is easier to understand.
>
> Signed-off-by: Alistair Popple <apopple@xxxxxxxxxx>
> ---
> arch/s390/mm/pgtable.c | 2 +-
> fs/proc/task_mmu.c | 23 +++++++------------
> include/linux/swap.h | 4 ++--
> include/linux/swapops.h | 51 ++++-------------------------------------
> mm/hmm.c | 5 ++--
> mm/memcontrol.c | 2 +-
> mm/memory.c | 10 ++++----
> mm/migrate.c | 6 ++---
> mm/page_vma_mapped.c | 6 ++---
> 9 files changed, 30 insertions(+), 79 deletions(-)

I wish you could come up with a more descriptive word that special
here

What I understand is this is true when the swap_offset is a pfn?

> -static inline struct page *migration_entry_to_page(swp_entry_t entry)
> -{
> - struct page *p = pfn_to_page(swp_offset(entry));
> - /*
> - * Any use of migration entries may only occur while the
> - * corresponding page is locked
> - */
> - BUG_ON(!PageLocked(compound_head(p)));
> - return p;

And this constraint has been completely lost?

A comment in front of the is_special_entry explaining all the rule
would help alot

Transformation looks fine otherwise

Jason