From: "Kirill A. Shutemov" <kirill@shutemov.name>
To: Oleg Nesterov <oleg@redhat.com>
Cc: Andy Lutomirski <luto@amacapital.net>,
Andrew Morton <akpm@linux-foundation.org>,
Al Viro <viro@zeniv.linux.org.uk>,
Benjamin LaHaise <bcrl@kvack.org>,
Hugh Dickins <hughd@google.com>, Jeff Moyer <jmoyer@redhat.com>,
Kirill Shutemov <kirill.shutemov@linux.intel.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Andy Lutomirski <luto@kernel.org>,
Pavel Emelyanov <xemul@parallels.com>
Subject: Re: [PATCH v2 1/1] mm: move ->mremap() from file_operations to vm_operations_struct
Date: Fri, 26 Jun 2015 01:08:29 +0300 [thread overview]
Message-ID: <20150625220829.GA25673@node.dhcp.inet.fi> (raw)
In-Reply-To: <20150625204504.GB31034@redhat.com>
On Thu, Jun 25, 2015 at 10:45:04PM +0200, Oleg Nesterov wrote:
> vma->vm_ops->mremap() looks more natural and clean in move_vma(),
> and this way ->mremap() can have more users. Say, vdso.
>
> While at it, s/aio_ring_remap/aio_ring_mremap/.
>
> Signed-off-by: Oleg Nesterov <oleg@redhat.com>
> ---
> fs/aio.c | 25 ++++++++++++++++---------
> include/linux/fs.h | 1 -
> include/linux/mm.h | 1 +
> mm/mremap.c | 4 ++--
> 4 files changed, 19 insertions(+), 12 deletions(-)
>
> diff --git a/fs/aio.c b/fs/aio.c
> index 9bc1335..a632f14 100644
> --- a/fs/aio.c
> +++ b/fs/aio.c
> @@ -308,15 +308,9 @@ static void aio_free_ring(struct kioctx *ctx)
> }
> }
>
> -static int aio_ring_mmap(struct file *file, struct vm_area_struct *vma)
> -{
> - vma->vm_flags |= VM_DONTEXPAND;
> - vma->vm_ops = &generic_file_vm_ops;
> - return 0;
> -}
> -
> -static int aio_ring_remap(struct file *file, struct vm_area_struct *vma)
> +static int aio_ring_mremap(struct vm_area_struct *vma)
> {
> + struct file *file = vma->vm_file;
> struct mm_struct *mm = vma->vm_mm;
> struct kioctx_table *table;
> int i, res = -EINVAL;
> @@ -339,9 +333,22 @@ static int aio_ring_remap(struct file *file, struct vm_area_struct *vma)
> return res;
> }
>
> +static const struct vm_operations_struct aio_ring_vm_ops = {
> + .mremap = aio_ring_mremap,
> + .fault = filemap_fault,
> + .map_pages = filemap_map_pages,
> + .page_mkwrite = filemap_page_mkwrite,
> +};
> +
> +static int aio_ring_mmap(struct file *file, struct vm_area_struct *vma)
> +{
> + vma->vm_flags |= VM_DONTEXPAND;
> + vma->vm_ops = &aio_ring_vm_ops;
> + return 0;
> +}
> +
> static const struct file_operations aio_ring_fops = {
> .mmap = aio_ring_mmap,
> - .mremap = aio_ring_remap,
> };
>
> #if IS_ENABLED(CONFIG_MIGRATION)
> diff --git a/include/linux/fs.h b/include/linux/fs.h
> index 35ec87e..42aac09 100644
> --- a/include/linux/fs.h
> +++ b/include/linux/fs.h
> @@ -1582,7 +1582,6 @@ struct file_operations {
> long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
> long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
> int (*mmap) (struct file *, struct vm_area_struct *);
> - int (*mremap)(struct file *, struct vm_area_struct *);
> int (*open) (struct inode *, struct file *);
> int (*flush) (struct file *, fl_owner_t id);
> int (*release) (struct inode *, struct file *);
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index a0fe3d3..0295b4a 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -244,6 +244,7 @@ struct vm_fault {
> struct vm_operations_struct {
> void (*open)(struct vm_area_struct * area);
> void (*close)(struct vm_area_struct * area);
> + int (*mremap)(struct vm_area_struct * area);
> int (*fault)(struct vm_area_struct *vma, struct vm_fault *vmf);
> void (*map_pages)(struct vm_area_struct *vma, struct vm_fault *vmf);
>
> diff --git a/mm/mremap.c b/mm/mremap.c
> index ed1b13a..aeba807 100644
> --- a/mm/mremap.c
> +++ b/mm/mremap.c
> @@ -276,8 +276,8 @@ static unsigned long move_vma(struct vm_area_struct *vma,
> need_rmap_locks);
> if (moved_len < old_len) {
> err = -ENOMEM;
> - } else if (vma->vm_file && vma->vm_file->f_op->mremap) {
> - err = vma->vm_file->f_op->mremap(vma->vm_file, new_vma);
> + } else if (vma->vm_ops && vma->vm_ops->mremap) {
> + err = vma->vm_ops->mremap(new_vma);
> }
>
> if (unlikely(err)) {
I'm not sure what is target tree for the patch. Last hunk is not going to
apply on Linus' tree or -next. Hm?
Otherwise, looks good.
Acked-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com>
--
Kirill A. Shutemov
next prev parent reply other threads:[~2015-06-25 22:09 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-23 18:02 [PATCH 0/1] mm: move ->mremap() from file_operations to vm_operations_struct Oleg Nesterov
2015-06-23 18:02 ` [PATCH 1/1] " Oleg Nesterov
2015-06-23 18:19 ` Kirill A. Shutemov
2015-06-23 18:26 ` Oleg Nesterov
2015-06-24 15:49 ` Oleg Nesterov
2015-06-24 19:23 ` Kirill A. Shutemov
2015-06-25 20:43 ` Oleg Nesterov
2015-06-23 21:01 ` Andy Lutomirski
2015-06-23 21:11 ` Pavel Emelyanov
2015-06-23 20:59 ` [PATCH 0/1] " Andy Lutomirski
2015-06-24 13:53 ` Oleg Nesterov
2015-06-25 20:45 ` [PATCH v2 1/1] " Oleg Nesterov
2015-06-25 22:08 ` Kirill A. Shutemov [this message]
2015-06-25 23:41 ` Oleg Nesterov
2015-06-26 12:21 ` Pavel Emelyanov
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=20150625220829.GA25673@node.dhcp.inet.fi \
--to=kirill@shutemov.name \
--cc=akpm@linux-foundation.org \
--cc=bcrl@kvack.org \
--cc=hughd@google.com \
--cc=jmoyer@redhat.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=luto@amacapital.net \
--cc=luto@kernel.org \
--cc=oleg@redhat.com \
--cc=torvalds@linux-foundation.org \
--cc=viro@zeniv.linux.org.uk \
--cc=xemul@parallels.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).