All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Huang, Ying" <ying.huang@linux.alibaba.com>
To: Shivank Garg <shivankg@amd.com>
Cc: <seanjc@google.com>,  <david@redhat.com>,  <vbabka@suse.cz>,
	<willy@infradead.org>,  <akpm@linux-foundation.org>,
	 <shuah@kernel.org>, <pbonzini@redhat.com>,  <brauner@kernel.org>,
	 <viro@zeniv.linux.org.uk>, <ackerleytng@google.com>,
	 <paul@paul-moore.com>,  <jmorris@namei.org>, <serge@hallyn.com>,
	 <pvorel@suse.cz>,  <bfoster@redhat.com>, <tabba@google.com>,
	 <vannapurve@google.com>,  <chao.gao@intel.com>,
	<bharata@amd.com>,  <nikunj@amd.com>,  <michael.day@amd.com>,
	<yan.y.zhao@intel.com>,  <Neeraj.Upadhyay@amd.com>,
	<thomas.lendacky@amd.com>,  <michael.roth@amd.com>,
	 <aik@amd.com>, <jgg@nvidia.com>,  <kalyazin@amazon.com>,
	 <peterx@redhat.com>, <jack@suse.cz>,  <rppt@kernel.org>,
	 <hch@infradead.org>, <cgzones@googlemail.com>,
	 <ira.weiny@intel.com>,  <rientjes@google.com>,
	<roypat@amazon.co.uk>,  <ziy@nvidia.com>,
	 <matthew.brost@intel.com>, <joshua.hahnjy@gmail.com>,
	 <rakie.kim@sk.com>,  <byungchul@sk.com>, <gourry@gourry.net>,
	 <kent.overstreet@linux.dev>,  <apopple@nvidia.com>,
	<chao.p.peng@intel.com>,  <amit@infradead.org>,
	 <ddutile@redhat.com>, <dan.j.williams@intel.com>,
	 <ashish.kalra@amd.com>,  <gshan@redhat.com>,
	<jgowans@amazon.com>,  <pankaj.gupta@amd.com>,
	 <papaluri@amd.com>, <yuzhao@google.com>,
	 <suzuki.poulose@arm.com>, <quic_eberman@quicinc.com>,
	 <aneeshkumar.kizhakeveetil@arm.com>,
	<linux-fsdevel@vger.kernel.org>,  <linux-mm@kvack.org>,
	<linux-kernel@vger.kernel.org>,
	 <linux-security-module@vger.kernel.org>, <kvm@vger.kernel.org>,
	 <linux-kselftest@vger.kernel.org>, <linux-coco@lists.linux.dev>
Subject: Re: [RFC PATCH v8 5/7] KVM: guest_memfd: Add slab-allocated inode cache
Date: Tue, 24 Jun 2025 12:16:06 +0800	[thread overview]
Message-ID: <87ecv9ojuh.fsf@DESKTOP-5N7EMDA> (raw)
In-Reply-To: <20250618112935.7629-6-shivankg@amd.com> (Shivank Garg's message of "Wed, 18 Jun 2025 11:29:33 +0000")

Shivank Garg <shivankg@amd.com> writes:

> Add dedicated inode structure (kvm_gmem_inode_info) and slab-allocated
> inode cache for guest memory backing, similar to how shmem handles inodes.
>
> This adds the necessary allocation/destruction functions and prepares
> for upcoming guest_memfd NUMA policy support changes.
>
> Signed-off-by: Shivank Garg <shivankg@amd.com>
> ---
>  virt/kvm/guest_memfd.c | 51 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 51 insertions(+)
>
> diff --git a/virt/kvm/guest_memfd.c b/virt/kvm/guest_memfd.c
> index 159df462d193..5a1ce6f5e287 100644
> --- a/virt/kvm/guest_memfd.c
> +++ b/virt/kvm/guest_memfd.c
> @@ -17,6 +17,15 @@ struct kvm_gmem {
>  	struct list_head entry;
>  };
>  
> +struct kvm_gmem_inode_info {
> +	struct inode vfs_inode;
> +};
> +
> +static inline struct kvm_gmem_inode_info *KVM_GMEM_I(struct inode *inode)
> +{
> +	return container_of(inode, struct kvm_gmem_inode_info, vfs_inode);
> +}
> +
>  /**
>   * folio_file_pfn - like folio_file_page, but return a pfn.
>   * @folio: The folio which contains this index.
> @@ -392,8 +401,33 @@ static struct file_operations kvm_gmem_fops = {
>  	.fallocate	= kvm_gmem_fallocate,
>  };
>  
> +static struct kmem_cache *kvm_gmem_inode_cachep;
> +
> +static struct inode *kvm_gmem_alloc_inode(struct super_block *sb)
> +{
> +	struct kvm_gmem_inode_info *info;
> +
> +	info = alloc_inode_sb(sb, kvm_gmem_inode_cachep, GFP_KERNEL);
> +	if (!info)
> +		return NULL;
> +
> +	return &info->vfs_inode;
> +}
> +
> +static void kvm_gmem_destroy_inode(struct inode *inode)
> +{
> +}
> +
> +static void kvm_gmem_free_inode(struct inode *inode)
> +{
> +	kmem_cache_free(kvm_gmem_inode_cachep, KVM_GMEM_I(inode));
> +}
> +
>  static const struct super_operations kvm_gmem_super_operations = {
>  	.statfs		= simple_statfs,
> +	.alloc_inode	= kvm_gmem_alloc_inode,
> +	.destroy_inode	= kvm_gmem_destroy_inode,
> +	.free_inode	= kvm_gmem_free_inode,
>  };
>  
>  static int kvm_gmem_init_fs_context(struct fs_context *fc)
> @@ -426,10 +460,26 @@ static int kvm_gmem_init_mount(void)
>  	return 0;
>  }
>  
> +static void kvm_gmem_init_inode(void *foo)
> +{
> +	struct kvm_gmem_inode_info *info = foo;
> +
> +	inode_init_once(&info->vfs_inode);
> +}
> +
> +static void kvm_gmem_init_inodecache(void)
> +{
> +	kvm_gmem_inode_cachep = kmem_cache_create("kvm_gmem_inode_cache",
> +						  sizeof(struct kvm_gmem_inode_info),
> +						  0, SLAB_ACCOUNT,
> +						  kvm_gmem_init_inode);

Check the return value?

And, I'm not a big fan of (logically) one line function encapsulation.

> +}
> +
>  int kvm_gmem_init(struct module *module)
>  {
>  	kvm_gmem_fops.owner = module;
>  
> +	kvm_gmem_init_inodecache();
>  	return kvm_gmem_init_mount();

kmem_cache_destroy(kvm_gmem_inode_cachep) if kvm_gmem_init_mount()
return with error?

>  }
>  
> @@ -437,6 +487,7 @@ void kvm_gmem_exit(void)
>  {
>  	kern_unmount(kvm_gmem_mnt);
>  	kvm_gmem_mnt = NULL;
> +	kmem_cache_destroy(kvm_gmem_inode_cachep);
>  }
>  
>  static int kvm_gmem_migrate_folio(struct address_space *mapping,

---
Best Regards,
Huang, Ying

  reply	other threads:[~2025-06-24  4:16 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-18 11:29 [RFC PATCH v8 0/7] Add NUMA mempolicy support for KVM guest-memfd Shivank Garg
2025-06-18 11:29 ` [RFC PATCH v8 1/7] security: Export anon_inode_make_secure_inode for KVM guest_memfd Shivank Garg
2025-06-18 11:29 ` [RFC PATCH v8 2/7] KVM: guest_memfd: Use guest mem inodes instead of anonymous inodes Shivank Garg
2025-06-18 11:29 ` [RFC PATCH v8 3/7] mm/filemap: Add mempolicy support to the filemap layer Shivank Garg
2025-06-19 15:08   ` Vlastimil Babka
2025-06-19 16:03   ` Matthew Wilcox
2025-06-20  5:59     ` Shivank Garg
2025-06-20  9:37       ` Vlastimil Babka
2025-06-20 14:34       ` Matthew Wilcox
2025-06-20 14:52         ` Shivank Garg
2025-06-20 14:58           ` Matthew Wilcox
2025-06-20 14:34   ` [PATCH 1/2] filemap: Add a mempolicy argument to filemap_alloc_folio() Matthew Wilcox (Oracle)
2025-06-23  6:13     ` Gupta, Pankaj
2025-06-23  7:19     ` Vlastimil Babka
2025-06-20 14:34   ` [PATCH 2/2] filemap: Add __filemap_get_folio_mpol() Matthew Wilcox (Oracle)
2025-06-20 16:53     ` Matthew Wilcox
2025-06-22 18:43       ` Andrew Morton
2025-06-22 19:02         ` Shivank Garg
2025-06-22 22:16           ` Andrew Morton
2025-06-23  4:18             ` Shivank Garg
2025-06-23 10:01             ` Shivank Garg
2025-06-23  7:16           ` Vlastimil Babka
2025-06-23  9:56             ` Shivank Garg
2025-06-21 18:42     ` kernel test robot
2025-06-23  6:15     ` Gupta, Pankaj
2025-06-23  7:20     ` Vlastimil Babka
2025-06-18 11:29 ` [RFC PATCH v8 4/7] mm/mempolicy: Export memory policy symbols Shivank Garg
2025-06-18 15:12   ` Gregory Price
2025-06-19 11:13     ` Shivank Garg
2025-06-19 16:28       ` Vlastimil Babka
2025-06-18 11:29 ` [RFC PATCH v8 5/7] KVM: guest_memfd: Add slab-allocated inode cache Shivank Garg
2025-06-24  4:16   ` Huang, Ying [this message]
2025-06-29 18:25     ` Shivank Garg
2025-06-18 11:29 ` [RFC PATCH v8 6/7] KVM: guest_memfd: Enforce NUMA mempolicy using shared policy Shivank Garg
2025-06-18 11:29 ` [RFC PATCH v8 7/7] KVM: guest_memfd: selftests: Add tests for mmap and NUMA policy support Shivank Garg

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=87ecv9ojuh.fsf@DESKTOP-5N7EMDA \
    --to=ying.huang@linux.alibaba.com \
    --cc=Neeraj.Upadhyay@amd.com \
    --cc=ackerleytng@google.com \
    --cc=aik@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=amit@infradead.org \
    --cc=aneeshkumar.kizhakeveetil@arm.com \
    --cc=apopple@nvidia.com \
    --cc=ashish.kalra@amd.com \
    --cc=bfoster@redhat.com \
    --cc=bharata@amd.com \
    --cc=brauner@kernel.org \
    --cc=byungchul@sk.com \
    --cc=cgzones@googlemail.com \
    --cc=chao.gao@intel.com \
    --cc=chao.p.peng@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=david@redhat.com \
    --cc=ddutile@redhat.com \
    --cc=gourry@gourry.net \
    --cc=gshan@redhat.com \
    --cc=hch@infradead.org \
    --cc=ira.weiny@intel.com \
    --cc=jack@suse.cz \
    --cc=jgg@nvidia.com \
    --cc=jgowans@amazon.com \
    --cc=jmorris@namei.org \
    --cc=joshua.hahnjy@gmail.com \
    --cc=kalyazin@amazon.com \
    --cc=kent.overstreet@linux.dev \
    --cc=kvm@vger.kernel.org \
    --cc=linux-coco@lists.linux.dev \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=linux-security-module@vger.kernel.org \
    --cc=matthew.brost@intel.com \
    --cc=michael.day@amd.com \
    --cc=michael.roth@amd.com \
    --cc=nikunj@amd.com \
    --cc=pankaj.gupta@amd.com \
    --cc=papaluri@amd.com \
    --cc=paul@paul-moore.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=pvorel@suse.cz \
    --cc=quic_eberman@quicinc.com \
    --cc=rakie.kim@sk.com \
    --cc=rientjes@google.com \
    --cc=roypat@amazon.co.uk \
    --cc=rppt@kernel.org \
    --cc=seanjc@google.com \
    --cc=serge@hallyn.com \
    --cc=shivankg@amd.com \
    --cc=shuah@kernel.org \
    --cc=suzuki.poulose@arm.com \
    --cc=tabba@google.com \
    --cc=thomas.lendacky@amd.com \
    --cc=vannapurve@google.com \
    --cc=vbabka@suse.cz \
    --cc=viro@zeniv.linux.org.uk \
    --cc=willy@infradead.org \
    --cc=yan.y.zhao@intel.com \
    --cc=yuzhao@google.com \
    --cc=ziy@nvidia.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 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.