| From 91c380624d5828f96fb5a390dd20475a47005857 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 20 Aug 2019 18:03:25 +0800 |
| Subject: 9p: avoid attaching writeback_fid on mmap with type PRIVATE |
| |
| From: Chengguang Xu <cgxu519@zoho.com.cn> |
| |
| [ Upstream commit c87a37ebd40b889178664c2c09cc187334146292 ] |
| |
| Currently on mmap cache policy, we always attach writeback_fid |
| whether mmap type is SHARED or PRIVATE. However, in the use case |
| of kata-container which combines 9p(Guest OS) with overlayfs(Host OS), |
| this behavior will trigger overlayfs' copy-up when excute command |
| inside container. |
| |
| Link: http://lkml.kernel.org/r/20190820100325.10313-1-cgxu519@zoho.com.cn |
| Signed-off-by: Chengguang Xu <cgxu519@zoho.com.cn> |
| Signed-off-by: Dominique Martinet <dominique.martinet@cea.fr> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| fs/9p/vfs_file.c | 3 +++ |
| 1 file changed, 3 insertions(+) |
| |
| diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c |
| index 79ff727254bb6..e963b83afc717 100644 |
| --- a/fs/9p/vfs_file.c |
| +++ b/fs/9p/vfs_file.c |
| @@ -528,6 +528,7 @@ v9fs_mmap_file_mmap(struct file *filp, struct vm_area_struct *vma) |
| v9inode = V9FS_I(inode); |
| mutex_lock(&v9inode->v_mutex); |
| if (!v9inode->writeback_fid && |
| + (vma->vm_flags & VM_SHARED) && |
| (vma->vm_flags & VM_WRITE)) { |
| /* |
| * clone a fid and add it to writeback_fid |
| @@ -629,6 +630,8 @@ static void v9fs_mmap_vm_close(struct vm_area_struct *vma) |
| (vma->vm_end - vma->vm_start - 1), |
| }; |
| |
| + if (!(vma->vm_flags & VM_SHARED)) |
| + return; |
| |
| p9_debug(P9_DEBUG_VFS, "9p VMA close, %p, flushing", vma); |
| |
| -- |
| 2.20.1 |
| |