All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mike Rapoport <rppt@kernel.org>
To: Peter Xu <peterx@redhat.com>
Cc: linux-mm@kvack.org, Andrea Arcangeli <aarcange@redhat.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Axel Rasmussen <axelrasmussen@google.com>,
	Baolin Wang <baolin.wang@linux.alibaba.com>,
	David Hildenbrand <david@redhat.com>,
	Hugh Dickins <hughd@google.com>,
	James Houghton <jthoughton@google.com>,
	"Liam R. Howlett" <Liam.Howlett@oracle.com>,
	Lorenzo Stoakes <lorenzo.stoakes@oracle.com>,
	Michal Hocko <mhocko@suse.com>,
	Muchun Song <muchun.song@linux.dev>,
	Nikita Kalyazin <kalyazin@amazon.com>,
	Oscar Salvador <osalvador@suse.de>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sean Christopherson <seanjc@google.com>,
	Shuah Khan <shuah@kernel.org>,
	Suren Baghdasaryan <surenb@google.com>,
	Vlastimil Babka <vbabka@suse.cz>,
	linux-kernel@vger.kernel.org, kvm@vger.kernel.org,
	linux-kselftest@vger.kernel.org
Subject: Re: [PATCH RFC 10/17] shmem, userfaultfd: implement shmem uffd operations using vm_uffd_ops
Date: Sun, 15 Feb 2026 19:45:04 +0200	[thread overview]
Message-ID: <aZIGIH9--qOamaMe@kernel.org> (raw)
In-Reply-To: <aYzf-hS4pUY9ulss@x1.local>

On Wed, Feb 11, 2026 at 03:00:58PM -0500, Peter Xu wrote:
> On Sun, Feb 08, 2026 at 12:35:43PM +0200, Mike Rapoport wrote:
> > > > +static void shmem_mfill_filemap_remove(struct folio *folio,
> > > > +				       struct vm_area_struct *vma)
> > > > +{
> > > > +	struct inode *inode = file_inode(vma->vm_file);
> > > > +
> > > > +	filemap_remove_folio(folio);
> > > > +	shmem_recalc_inode(inode, 0, 0);
> > > >  	folio_unlock(folio);
> > > > -	folio_put(folio);
> > > > -out_unacct_blocks:
> > > > -	shmem_inode_unacct_blocks(inode, 1);
> > > 
> > > This looks wrong, or maybe I miss somewhere we did the unacct_blocks()?
> > 
> > This is handled by shmem_recalc_inode(inode, 0, 0).
> 
> IIUC shmem_recalc_inode() only does the fixup of shmem_inode_info over
> possiblly changing inode->i_mapping->nrpages.  It's not for reverting the
> accounting in the failure paths here.
> 
> OTOH, we still need to maintain accounting for the rest things with
> correctly invoke shmem_inode_unacct_blocks().  One thing we can try is
> testing this series against either shmem quota support (since 2023, IIUC
> it's relevant to "quota" mount option), or max_blocks accountings (IIUC,
> "size" mount option), etc.  Any of those should reflect a difference if my
> understanding is correct.
> 
> So IIUC we still need the unacct_blocks(), please kindly help double check.

I followed shmem_get_folio_gfp() error handling, and unless I missed
something we should have the same sequence with uffd.

In shmem_mfill_filemap_add() we increment both i_mapping->nrpages and
info->alloced in shmem_add_to_page_cache() and 
shmem_recalc_inode(inode, 1, 0) respectively.

Then in shmem_filemap_remove() the call to filemap_remove_folio()
decrements i_mapping->nrpages and shmem_recalc_inode(inode, 0, 0) will see
freed=1 and will call shmem_inode_unacct_blocks().
 
> Thanks,
> 
> -- 
> Peter Xu
> 

-- 
Sincerely yours,
Mike.

  reply	other threads:[~2026-02-15 17:45 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-27 19:29 [PATCH RFC 00/17] mm, kvm: allow uffd suppot in guest_memfd Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 01/17] userfaultfd: introduce mfill_copy_folio_locked() helper Mike Rapoport
2026-02-03 17:45   ` Peter Xu
2026-02-08  9:49     ` Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 02/17] userfaultfd: introduce struct mfill_state Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 03/17] userfaultfd: introduce mfill_get_pmd() helper Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 04/17] userfaultfd: introduce mfill_get_vma() and mfill_put_vma() Mike Rapoport
2026-02-02 21:49   ` Peter Xu
2026-02-08  9:54     ` Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 05/17] userfaultfd: retry copying with locks dropped in mfill_atomic_pte_copy() Mike Rapoport
2026-02-02 21:23   ` Peter Xu
2026-02-08 10:01     ` Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 06/17] userfaultfd: move vma_can_userfault out of line Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 07/17] userfaultfd: introduce vm_uffd_ops Mike Rapoport
2026-02-02 21:36   ` Peter Xu
2026-02-08 10:13     ` Mike Rapoport
2026-02-11 19:35       ` Peter Xu
2026-02-15 17:47         ` Mike Rapoport
2026-02-18 21:34           ` Peter Xu
2026-01-27 19:29 ` [PATCH RFC 08/17] userfaultfd, shmem: use a VMA callback to handle UFFDIO_CONTINUE Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 09/17] userfaultfd: introduce vm_uffd_ops->alloc_folio() Mike Rapoport
2026-02-02 22:13   ` Peter Xu
2026-02-08 10:22     ` Mike Rapoport
2026-02-11 19:37       ` Peter Xu
2026-01-27 19:29 ` [PATCH RFC 10/17] shmem, userfaultfd: implement shmem uffd operations using vm_uffd_ops Mike Rapoport
2026-02-03 17:40   ` Peter Xu
2026-02-08 10:35     ` Mike Rapoport
2026-02-11 20:00       ` Peter Xu
2026-02-15 17:45         ` Mike Rapoport [this message]
2026-02-18 21:45           ` Peter Xu
2026-01-27 19:29 ` [PATCH RFC 11/17] userfaultfd: mfill_atomic() remove retry logic Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 12/17] mm: introduce VM_FAULT_UFFD_MINOR fault reason Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 13/17] mm: introduce VM_FAULT_UFFD_MISSING " Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 14/17] KVM: guest_memfd: implement userfaultfd minor mode Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 15/17] KVM: guest_memfd: implement userfaultfd missing mode Mike Rapoport
2026-03-04 17:12   ` Nikita Kalyazin
2026-03-04 17:17     ` Nikita Kalyazin
2026-01-27 19:29 ` [PATCH RFC 16/17] KVM: selftests: test userfaultfd minor for guest_memfd Mike Rapoport
2026-01-27 19:29 ` [PATCH RFC 17/17] KVM: selftests: test userfaultfd missing " Mike Rapoport
2026-02-03 20:56 ` [PATCH RFC 00/17] mm, kvm: allow uffd suppot in guest_memfd Peter Xu
2026-02-09 15:35   ` David Hildenbrand (Arm)
2026-02-11  6:04     ` Mike Rapoport
2026-02-11  9:52       ` David Hildenbrand (Arm)

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=aZIGIH9--qOamaMe@kernel.org \
    --to=rppt@kernel.org \
    --cc=Liam.Howlett@oracle.com \
    --cc=aarcange@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=axelrasmussen@google.com \
    --cc=baolin.wang@linux.alibaba.com \
    --cc=david@redhat.com \
    --cc=hughd@google.com \
    --cc=jthoughton@google.com \
    --cc=kalyazin@amazon.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=lorenzo.stoakes@oracle.com \
    --cc=mhocko@suse.com \
    --cc=muchun.song@linux.dev \
    --cc=osalvador@suse.de \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=seanjc@google.com \
    --cc=shuah@kernel.org \
    --cc=surenb@google.com \
    --cc=vbabka@suse.cz \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.