Re: [PATCH v3] mm: Convert DAX lock/unlock page to lock/unlock folio

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

 



Hi, Andrew,

On 9/10/2023 12:46 PM, Andrew Morton wrote:
On Fri,  8 Sep 2023 16:23:36 -0600 Jane Chu <jane.chu@xxxxxxxxxx> wrote:

>From Matthew Wilcox:

The one caller of DAX lock/unlock page already calls compound_head(),
so use page_folio() instead, then use a folio throughout the DAX code
to remove uses of page->mapping and page->index. [1]

The additional change to [1] is comments added to mf_generic_kill_procs().

[1] https://lore.kernel.org/linux-mm/b2b0fce8-b7f8-420e-0945-ab9581b23d9a@xxxxxxxxxx/T/


The delta versus the patch which is presently in mm.git is:

--- a/mm/memory-failure.c~a
+++ a/mm/memory-failure.c
@@ -1720,11 +1720,19 @@ static void unmap_and_kill(struct list_h
  	kill_procs(to_kill, flags & MF_MUST_KILL, false, pfn, flags);
  }
+/*
+ * Only dev_pagemap pages get here, such as fsdax when the filesystem
+ * either do not claim or fails to claim a hwpoison event, or devdax.
+ * The fsdax pages are initialized per base page, and the devdax pages
+ * could be initialized either as base pages, or as compound pages with
+ * vmemmap optimization enabled. Devdax is simplistic in its dealing with
+ * hwpoison, such that, if a subpage of a compound page is poisoned,
+ * simply mark the compound head page is by far sufficient.
+ */
  static int mf_generic_kill_procs(unsigned long long pfn, int flags,
  		struct dev_pagemap *pgmap)
  {
-	struct page *page = pfn_to_page(pfn);
-	struct folio *folio = page_folio(page);
+	struct folio *folio = pfn_folio(pfn);
  	LIST_HEAD(to_kill);
  	dax_entry_t cookie;
  	int rc = 0;

so I assume this is the v1->v3 delta.


Yes.

I'll queue this as a fixup patch with the changelog

add comment to mf_generic_kill_procss(), simplify
mf_generic_kill_procs:folio initialization.


Thank you!
-jane




[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