| From bfe97429aa98a7582891cd873a8a8ae69c7f9086 Mon Sep 17 00:00:00 2001 |
| From: Chengguang Xu <cgxu519@zoho.com.cn> |
| Date: Tue, 20 Aug 2019 18:03:25 +0800 |
| Subject: [PATCH] 9p: avoid attaching writeback_fid on mmap with type PRIVATE |
| |
| commit c87a37ebd40b889178664c2c09cc187334146292 upstream. |
| |
| 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: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/fs/9p/vfs_file.c b/fs/9p/vfs_file.c |
| index 4cc966a31cb3..fe7f0bd2048e 100644 |
| --- a/fs/9p/vfs_file.c |
| +++ b/fs/9p/vfs_file.c |
| @@ -513,6 +513,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 |
| @@ -614,6 +615,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.7.4 |
| |