All of lore.kernel.org
 help / color / mirror / Atom feed
From: Baoquan He <bhe@redhat.com>
To: Oscar Salvador <osalvador@suse.de>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	David Hildenbrand <david@redhat.com>,
	Michal Hocko <mhocko@kernel.org>,
	Muchun Song <songmuchun@bytedance.com>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Michal Hocko <mhocko@suse.com>
Subject: Re: [PATCH v9 5/7] mm: Make alloc_contig_range handle free hugetlb pages
Date: Fri, 16 Apr 2021 17:49:20 +0800	[thread overview]
Message-ID: <20210416094920.GA8560@MiWiFi-R3L-srv> (raw)
In-Reply-To: <20210416070023.4742-6-osalvador@suse.de>

On 04/16/21 at 09:00am, Oscar Salvador wrote:
...  
> +/*
> + * alloc_and_dissolve_huge_page - Allocate a new page and dissolve the old one
> + * @h: struct hstate old page belongs to
> + * @old_page: Old page to dissolve
> + * Returns 0 on success, otherwise negated error.
> + */
> +static int alloc_and_dissolve_huge_page(struct hstate *h, struct page *old_page)
> +{
> +	gfp_t gfp_mask = htlb_alloc_mask(h) | __GFP_THISNODE;
> +	int nid = page_to_nid(old_page);
> +	struct page *new_page;
> +	int ret = 0;
> +
> +	/*
> +	 * Before dissolving the page, we need to allocate a new one for the
> +	 * pool to remain stable. Using alloc_buddy_huge_page() allows us to
> +	 * not having to deal with prep_new_page() and avoids dealing of any
				   ~ prep_new_huge_page() ?
> +	 * counters. This simplifies and let us do the whole thing under the
> +	 * lock.
> +	 */
> +	new_page = alloc_buddy_huge_page(h, gfp_mask, nid, NULL, NULL);
> +	if (!new_page)
> +		return -ENOMEM;
> +
> +retry:
> +	spin_lock_irq(&hugetlb_lock);
...



  reply	other threads:[~2021-04-16  9:49 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-16  7:00 [PATCH v9 0/7] Make alloc_contig_range handle Hugetlb pages Oscar Salvador
2021-04-16  7:00 ` [PATCH v9 1/7] mm,page_alloc: Bail out earlier on -ENOMEM in alloc_contig_migrate_range Oscar Salvador
2021-04-16  7:00 ` [PATCH v9 2/7] mm,compaction: Let isolate_migratepages_{range,block} return error codes Oscar Salvador
2021-04-16  7:00 ` [PATCH v9 3/7] mm,hugetlb: Drop clearing of flag from prep_new_huge_page Oscar Salvador
2021-04-16  7:00 ` [PATCH v9 4/7] mm,hugetlb: Split prep_new_huge_page functionality Oscar Salvador
2021-04-16  7:00 ` [PATCH v9 5/7] mm: Make alloc_contig_range handle free hugetlb pages Oscar Salvador
2021-04-16  9:49   ` Baoquan He [this message]
2021-04-16 12:14     ` Oscar Salvador
2021-04-16  7:00 ` [PATCH v9 6/7] mm: Make alloc_contig_range handle in-use " Oscar Salvador
2021-04-16  8:36   ` David Hildenbrand
2021-04-16  7:00 ` [PATCH v9 7/7] mm,page_alloc: Drop unnecessary checks from pfn_range_valid_contig Oscar Salvador

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210416094920.GA8560@MiWiFi-R3L-srv \
    --to=bhe@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=david@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@kernel.org \
    --cc=mhocko@suse.com \
    --cc=mike.kravetz@oracle.com \
    --cc=osalvador@suse.de \
    --cc=songmuchun@bytedance.com \
    --cc=vbabka@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.