qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 04/12] mm/shmem: Support memfile_notifier


From: Andy Lutomirski
Subject: Re: [PATCH v4 04/12] mm/shmem: Support memfile_notifier
Date: Fri, 11 Feb 2022 15:40:09 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0

On 1/18/22 05:21, Chao Peng wrote:
It maintains a memfile_notifier list in shmem_inode_info structure and
implements memfile_pfn_ops callbacks defined by memfile_notifier. It
then exposes them to memfile_notifier via
shmem_get_memfile_notifier_info.

We use SGP_NOALLOC in shmem_get_lock_pfn since the pages should be
allocated by userspace for private memory. If there is no pages
allocated at the offset then error should be returned so KVM knows that
the memory is not private memory.

Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
Signed-off-by: Chao Peng <chao.p.peng@linux.intel.com>

  static int memfile_get_notifier_info(struct inode *inode,
                                     struct memfile_notifier_list **list,
                                     struct memfile_pfn_ops **ops)
  {
-       return -EOPNOTSUPP;
+       int ret = -EOPNOTSUPP;
+#ifdef CONFIG_SHMEM
+       ret = shmem_get_memfile_notifier_info(inode, list, ops);
+#endif
+       return ret;
  }

+int shmem_get_memfile_notifier_info(struct inode *inode,
+                                   struct memfile_notifier_list **list,
+                                   struct memfile_pfn_ops **ops)
+{
+       struct shmem_inode_info *info;
+
+       if (!shmem_mapping(inode->i_mapping))
+               return -EINVAL;
+
+       info = SHMEM_I(inode);
+       *list = &info->memfile_notifiers;
+       if (ops)
+               *ops = &shmem_pfn_ops;
+
+       return 0;

I can't wrap my head around exactly who is supposed to call these functions and when, but there appears to be a missing check that the inode is actually a shmem inode.

What is this code trying to do?  It's very abstract.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]