From: Matthew Brost <[email protected]>

Use free_zone_device_folio_prepare() to restore fsdax ZONE_DEVICE folios
to a sane initial state upon the final put.

Cc: Dan Williams <[email protected]>
Cc: Matthew Wilcox <[email protected]>
Cc: Jan Kara <[email protected]>
Cc: Alexander Viro <[email protected]>
Cc: Christian Brauner <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: David Hildenbrand <[email protected]>
Cc: Lorenzo Stoakes <[email protected]>
Cc: Liam R. Howlett <[email protected]>
Cc: Vlastimil Babka <[email protected]>
Cc: Mike Rapoport <[email protected]>
Cc: Suren Baghdasaryan <[email protected]>
Cc: Michal Hocko <[email protected]>
Cc: Zi Yan <[email protected]>
Cc: Alistair Popple <[email protected]>
Cc: Balbir Singh <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Suggested-by: Alistair Popple <[email protected]>
Signed-off-by: Matthew Brost <[email protected]>
Signed-off-by: Francois Dugast <[email protected]>
---
 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

Reply via email to