From: Matthew Brost <matthew.brost@intel.com>
Use free_zone_device_folio_prepare() to restore fsdax ZONE_DEVICE folios
to a sane initial state upon the final put.
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: Matthew Wilcox <willy@infradead.org>
Cc: Jan Kara <jack@suse.cz>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Christian Brauner <brauner@kernel.org>
Cc: Andrew Morton <akpm@linux-foundation.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Liam R. Howlett <Liam.Howlett@oracle.com>
Cc: Vlastimil Babka <vbabka@suse.cz>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Zi Yan <ziy@nvidia.com>
Cc: Alistair Popple <apopple@nvidia.com>
Cc: Balbir Singh <balbirs@nvidia.com>
Cc: linux-mm@kvack.org
Cc: linux-fsdevel@vger.kernel.org
Cc: nvdimm@lists.linux.dev
Cc: linux-kernel@vger.kernel.org
Suggested-by: Alistair Popple <apopple@nvidia.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Francois Dugast <francois.dugast@intel.com>
---
fs/dax.c | 24 +-----------------------
1 file changed, 1 insertion(+), 23 deletions(-)
diff --git a/fs/dax.c b/fs/dax.c
index 289e6254aa30..d998f7615abb 100644
--- a/fs/dax.c
+++ b/fs/dax.c
@@ -391,29 +391,7 @@ static inline unsigned long dax_folio_put(struct folio *folio)
if (ref)
return ref;
- folio->mapping = NULL;
- order = folio_order(folio);
- if (!order)
- return 0;
- folio_reset_order(folio);
-
- for (i = 0; i < (1UL << order); i++) {
- struct dev_pagemap *pgmap = page_pgmap(&folio->page);
- struct page *page = folio_page(folio, i);
- struct folio *new_folio = (struct folio *)page;
-
- ClearPageHead(page);
- clear_compound_head(page);
-
- new_folio->mapping = NULL;
- /*
- * Reset pgmap which was over-written by
- * prep_compound_page().
- */
- new_folio->pgmap = pgmap;
- new_folio->share = 0;
- WARN_ON_ONCE(folio_ref_count(new_folio));
- }
+ free_zone_device_folio_prepare(folio);
return ref;
}
--
2.43.0
Hi Francois,
kernel test robot noticed the following build warnings:
[auto build test WARNING on drm-tip/drm-tip]
[also build test WARNING on linus/master v6.19-rc4 next-20260109]
[cannot apply to drm-misc/drm-misc-next akpm-mm/mm-everything powerpc/topic/ppc-kvm pci/next pci/for-linus akpm-mm/mm-nonmm-unstable brauner-vfs/vfs.all daeinki-drm-exynos/exynos-drm-next drm/drm-next drm-i915/for-linux-next drm-i915/for-linux-next-fixes]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Francois-Dugast/mm-zone_device-Add-order-argument-to-folio_free-callback/20260112-050347
base: https://gitlab.freedesktop.org/drm/tip.git drm-tip
patch link: https://lore.kernel.org/r/20260111205820.830410-4-francois.dugast%40intel.com
patch subject: [PATCH v4 3/7] fs/dax: Use free_zone_device_folio_prepare() helper
config: x86_64-rhel-9.4-rust (https://download.01.org/0day-ci/archive/20260112/202601121151.afcnEvLk-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
rustc: rustc 1.88.0 (6b00bc388 2025-06-23)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260112/202601121151.afcnEvLk-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202601121151.afcnEvLk-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> fs/dax.c:384:6: warning: unused variable 'order' [-Wunused-variable]
384 | int order, i;
| ^~~~~
>> fs/dax.c:384:13: warning: unused variable 'i' [-Wunused-variable]
384 | int order, i;
| ^
2 warnings generated.
vim +/order +384 fs/dax.c
38607c62b34b46 Alistair Popple 2025-02-28 380
38607c62b34b46 Alistair Popple 2025-02-28 381 static inline unsigned long dax_folio_put(struct folio *folio)
6061b69b9a550a Shiyang Ruan 2022-06-03 382 {
38607c62b34b46 Alistair Popple 2025-02-28 383 unsigned long ref;
38607c62b34b46 Alistair Popple 2025-02-28 @384 int order, i;
38607c62b34b46 Alistair Popple 2025-02-28 385
38607c62b34b46 Alistair Popple 2025-02-28 386 if (!dax_folio_is_shared(folio))
38607c62b34b46 Alistair Popple 2025-02-28 387 ref = 0;
38607c62b34b46 Alistair Popple 2025-02-28 388 else
38607c62b34b46 Alistair Popple 2025-02-28 389 ref = --folio->share;
38607c62b34b46 Alistair Popple 2025-02-28 390
38607c62b34b46 Alistair Popple 2025-02-28 391 if (ref)
38607c62b34b46 Alistair Popple 2025-02-28 392 return ref;
38607c62b34b46 Alistair Popple 2025-02-28 393
ae869c69ed0719 Matthew Brost 2026-01-11 394 free_zone_device_folio_prepare(folio);
16900426586032 Shiyang Ruan 2022-12-01 395
38607c62b34b46 Alistair Popple 2025-02-28 396 return ref;
16900426586032 Shiyang Ruan 2022-12-01 397 }
16900426586032 Shiyang Ruan 2022-12-01 398
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
© 2016 - 2026 Red Hat, Inc.