From: David Hildenbrand <david@redhat.com>
To: Alistair Popple <apopple@nvidia.com>,
akpm@linux-foundation.org, dan.j.williams@intel.com,
linux-mm@kvack.org
Cc: Alison Schofield <alison.schofield@intel.com>,
lina@asahilina.net, zhang.lyra@gmail.com,
gerald.schaefer@linux.ibm.com, vishal.l.verma@intel.com,
dave.jiang@intel.com, logang@deltatee.com, bhelgaas@google.com,
jack@suse.cz, jgg@ziepe.ca, catalin.marinas@arm.com,
will@kernel.org, mpe@ellerman.id.au, npiggin@gmail.com,
dave.hansen@linux.intel.com, ira.weiny@intel.com,
willy@infradead.org, djwong@kernel.org, tytso@mit.edu,
linmiaohe@huawei.com, peterx@redhat.com,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org,
linuxppc-dev@lists.ozlabs.org, nvdimm@lists.linux.dev,
linux-cxl@vger.kernel.org, linux-fsdevel@vger.kernel.org,
linux-ext4@vger.kernel.org, linux-xfs@vger.kernel.org,
jhubbard@nvidia.com, hch@lst.de, david@fromorbit.com,
chenhuacai@kernel.org, kernel@xen0n.name,
loongarch@lists.linux.dev
Subject: Re: [PATCH v7 19/20] fs/dax: Properly refcount fs dax pages
Date: Mon, 10 Feb 2025 20:01:28 +0100 [thread overview]
Message-ID: <6a6773ae-a21a-437c-be6f-d8e53267e534@redhat.com> (raw)
In-Reply-To: <b5c33b201b9dc0131d8bb33b31661645c68bf398.1738709036.git-series.apopple@nvidia.com>
>
> -static inline unsigned long dax_page_share_put(struct page *page)
> +static inline unsigned long dax_folio_put(struct folio *folio)
> {
> - WARN_ON_ONCE(!page->share);
> - return --page->share;
> + unsigned long ref;
> +
> + if (!dax_folio_is_shared(folio))
> + ref = 0;
> + else
> + ref = --folio->share;
> +
> + WARN_ON_ONCE(ref < 0);
> + if (!ref) {
> + folio->mapping = NULL;
> + if (folio_order(folio)) {
I'd have made this easier to read by doing
if (ref)
return ref;
folio->mapping = NULL;
order = folio_order(folio)
if (!order)
return 0;
pgmap = page_pgmap(&folio->page);
for (i = 0; i < (1UL << order); i++) {
// loop body see below
}
return 0;
In the context of similar split users and related discussions in the
future with memdescs -- see 89a41a0263293856678189981e5407375261c4ff --
I would further do within the loop (avoiding messing with page->
completely):
...
struct page *page = folio_page(folio, i);
/* Careful: see __split_huge_page_tail() */
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));
...
I scanned over the other stuff in here, but I'm not an expert on the
pfn_t etc thingies.
--
Cheers,
David / dhildenb
next prev parent reply other threads:[~2025-02-10 19:01 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-02-04 22:47 [PATCH v7 00/20] fs/dax: Fix ZONE_DEVICE page reference counts Alistair Popple
2025-02-04 22:47 ` [PATCH v7 01/20] fuse: Fix dax truncate/punch_hole fault path Alistair Popple
2025-02-05 3:07 ` Balbir Singh
2025-02-04 22:47 ` [PATCH v7 02/20] fs/dax: Return unmapped busy pages from dax_layout_busy_page_range() Alistair Popple
2025-02-05 3:15 ` Balbir Singh
2025-02-04 22:48 ` [PATCH v7 03/20] fs/dax: Don't skip locked entries when scanning entries Alistair Popple
2025-02-04 22:48 ` [PATCH v7 04/20] fs/dax: Refactor wait for dax idle page Alistair Popple
2025-02-04 22:48 ` [PATCH v7 05/20] fs/dax: Create a common implementation to break DAX layouts Alistair Popple
2025-02-04 22:48 ` [PATCH v7 06/20] fs/dax: Always remove DAX page-cache entries when breaking layouts Alistair Popple
2025-02-04 22:48 ` [PATCH v7 07/20] fs/dax: Ensure all pages are idle prior to filesystem unmount Alistair Popple
2025-02-04 22:48 ` [PATCH v7 08/20] fs/dax: Remove PAGE_MAPPING_DAX_SHARED mapping flag Alistair Popple
2025-02-04 22:48 ` [PATCH v7 09/20] mm/gup: Remove redundant check for PCI P2PDMA page Alistair Popple
2025-02-04 22:48 ` [PATCH v7 10/20] mm/mm_init: Move p2pdma page refcount initialisation to p2pdma Alistair Popple
2025-02-04 22:48 ` [PATCH v7 11/20] mm: Allow compound zone device pages Alistair Popple
2025-02-04 22:48 ` [PATCH v7 12/20] mm/memory: Enhance insert_page_into_pte_locked() to create writable mappings Alistair Popple
2025-02-10 18:39 ` David Hildenbrand
2025-02-04 22:48 ` [PATCH v7 13/20] mm/memory: Add vmf_insert_page_mkwrite() Alistair Popple
2025-02-10 18:40 ` David Hildenbrand
2025-02-04 22:48 ` [PATCH v7 14/20] rmap: Add support for PUD sized mappings to rmap Alistair Popple
2025-02-10 18:41 ` David Hildenbrand
2025-02-04 22:48 ` [PATCH v7 15/20] huge_memory: Add vmf_insert_folio_pud() Alistair Popple
2025-02-10 18:43 ` David Hildenbrand
2025-02-04 22:48 ` [PATCH v7 16/20] huge_memory: Add vmf_insert_folio_pmd() Alistair Popple
2025-02-10 18:45 ` David Hildenbrand
2025-02-17 4:29 ` Alistair Popple
2025-02-17 19:58 ` David Hildenbrand
2025-02-04 22:48 ` [PATCH v7 17/20] mm/gup: Don't allow FOLL_LONGTERM pinning of FS DAX pages Alistair Popple
2025-02-04 22:48 ` [PATCH v7 18/20] dcssblk: Mark DAX broken, remove FS_DAX_LIMITED support Alistair Popple
2025-02-04 22:48 ` [PATCH v7 19/20] fs/dax: Properly refcount fs dax pages Alistair Popple
2025-02-06 21:06 ` Guenter Roeck
2025-02-10 19:01 ` David Hildenbrand [this message]
2025-02-04 22:48 ` [PATCH v7 20/20] device/dax: Properly refcount device dax pages when mapping Alistair Popple
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6a6773ae-a21a-437c-be6f-d8e53267e534@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=alison.schofield@intel.com \
--cc=apopple@nvidia.com \
--cc=bhelgaas@google.com \
--cc=catalin.marinas@arm.com \
--cc=chenhuacai@kernel.org \
--cc=dan.j.williams@intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=dave.jiang@intel.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=gerald.schaefer@linux.ibm.com \
--cc=hch@lst.de \
--cc=ira.weiny@intel.com \
--cc=jack@suse.cz \
--cc=jgg@ziepe.ca \
--cc=jhubbard@nvidia.com \
--cc=kernel@xen0n.name \
--cc=lina@asahilina.net \
--cc=linmiaohe@huawei.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-cxl@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-ext4@vger.kernel.org \
--cc=linux-fsdevel@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=logang@deltatee.com \
--cc=loongarch@lists.linux.dev \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=nvdimm@lists.linux.dev \
--cc=peterx@redhat.com \
--cc=tytso@mit.edu \
--cc=vishal.l.verma@intel.com \
--cc=will@kernel.org \
--cc=willy@infradead.org \
--cc=zhang.lyra@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).