Re: updated documentation: Splitting pinned folios

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 3/14/24 09:22, David Hildenbrand wrote:
On 14.03.24 03:46, John Hubbard wrote:
On 3/13/24 2:20 AM, David Hildenbrand wrote:
...
The description is wrong. Whoever calls split_huge_page_to_list() must hold a folio reference.

That folio reference will be transferred to @page (not the head page) once split. So @page can be used by the caller after the split succeeded.


David and all, does this updated draft comment look accurate?


Note that in mm-unstable (maybe even mm-stable already), the function is now called split_huge_page_to_list_to_order().

Aha, yes already in mm-stable, and the comment is quite heavily modified
there, too. But it's straightforward to merge in relevant parts of what
we're trying to say here.

I can send out an actual patch after the merge window finishes.


/*
   * This function splits a huge page into normal pages. @page can point to any    * subpage of the huge page to split. The split operation does not change the
   * position of @page.
   *
   * Prerequisites:
   *
   * 1) The caller must hold a reference on the @page's owning folio, also known as
   *    the huge page.
   *
   * 2) The huge page must be locked.
   *
   * 3) The folio must not be pinned. Pinned folios will not be split; instead,
   *    the caller will receive an -EBUSY.

Maybe focus on unexpected folio references:

3) The folio must not be pinned. Any unexpected folio references, including GUP pins, will result in the folio not getting split; instead ...

Yes, saying "unexpected" does make it clearer, agreed.


   * >    * After splitting, the folio's refcount is transfered to @page
(not the head

s/transfered/transferred/

   * page, unless @page is actually the head page). The other subpages may be
   * freed if they are not mapped.

"folio's refcount" might be a bit misleading. It's more like

"The caller's folio reference will be transferred to @page, resulting in a raised refcount of @page after this call ... "

heh, my wording was actually wrong! Thanks for correcting it. I didn't
see where the @page picked up the folio's reference, so I thought I
must have misread your original explanation.


thanks,
--
John Hubbard
NVIDIA





[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux