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
