On Fri, Jan 15, 2021 at 04:31:02PM -0800, Mike Kravetz wrote:
> +++ b/fs/hugetlbfs/inode.c
> @@ -735,7 +735,7 @@ static long hugetlbfs_fallocate(struct file *file, int 
> mode, loff_t offset,
>  
>               mutex_unlock(&hugetlb_fault_mutex_table[hash]);
>  
> -             set_page_huge_active(page);
> +             hugetlb_set_page_flag(page, HP_Migratable);

I had understood the request to be more like ...

                SetHPageMigratable(page);

> +++ b/include/linux/hugetlb.h
> @@ -480,9 +480,13 @@ unsigned long hugetlb_get_unmapped_area(struct file 
> *file, unsigned long addr,
>   * HP_Restore_Reserve - Set when a hugetlb page consumes a reservation at
>   *   allocation time.  Cleared when page is fully instantiated.  Free
>   *   routine checks flag to restore a reservation on error paths.
> + * HP_Migratable - Set after a newly allocated page is added to the page
> + *   cache and/or page tables.  Indicates the page is a candidate for
> + *   migration.
>   */
>  enum hugetlb_page_flags {
>       HP_Restore_Reserve = 0,
> +     HP_Migratable,
>  };

and name these HPG_restore_reserve and HPG_migratable

and generate the calls to hugetlb_set_page_flag etc from macros, eg:

#define TESTHPAGEFLAG(uname, lname)                                     \
static __always_inline bool HPage##uname(struct page *page)             \
{ return test_bit(HPG_##lname, &page->private); }
...
#define HPAGEFLAG(uname, lname)                                         \
        TESTHPAGEFLAG(uname, lname)                                     \
        SETHPAGEFLAG(uname, lname)                                      \
        CLEARHPAGEFLAG(uname, lname)

HPAGEFLAG(RestoreReserve, restore_reserve)
HPAGEFLAG(Migratable, migratable)

just to mirror page-flags.h more closely.

Reply via email to