From: Greg Kroah-Hartman Date: Wed, 1 Dec 2021 09:14:21 +0000 (+0100) Subject: 4.9-stable patches X-Git-Tag: v4.4.294~70 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=72b6a6eaca1b7f9a453679a55f6f9824eb7780c1;p=thirdparty%2Fkernel%2Fstable-queue.git 4.9-stable patches added patches: nfsv42-fix-pagecache-invalidation-after-copy-clone.patch --- diff --git a/queue-4.9/nfsv42-fix-pagecache-invalidation-after-copy-clone.patch b/queue-4.9/nfsv42-fix-pagecache-invalidation-after-copy-clone.patch new file mode 100644 index 00000000000..2af3d0abf06 --- /dev/null +++ b/queue-4.9/nfsv42-fix-pagecache-invalidation-after-copy-clone.patch @@ -0,0 +1,39 @@ +From 3f015d89a47cd8855cd92f71fff770095bd885a1 Mon Sep 17 00:00:00 2001 +From: Benjamin Coddington +Date: Tue, 16 Nov 2021 10:48:13 -0500 +Subject: NFSv42: Fix pagecache invalidation after COPY/CLONE + +From: Benjamin Coddington + +commit 3f015d89a47cd8855cd92f71fff770095bd885a1 upstream. + +The mechanism in use to allow the client to see the results of COPY/CLONE +is to drop those pages from the pagecache. This forces the client to read +those pages once more from the server. However, truncate_pagecache_range() +zeros out partial pages instead of dropping them. Let us instead use +invalidate_inode_pages2_range() with full-page offsets to ensure the client +properly sees the results of COPY/CLONE operations. + +Cc: # v4.7+ +Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation") +Signed-off-by: Benjamin Coddington +Signed-off-by: Trond Myklebust +Signed-off-by: Greg Kroah-Hartman +--- + fs/nfs/nfs42proc.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +--- a/fs/nfs/nfs42proc.c ++++ b/fs/nfs/nfs42proc.c +@@ -181,8 +181,9 @@ static ssize_t _nfs42_proc_copy(struct f + return status; + } + +- truncate_pagecache_range(dst_inode, pos_dst, +- pos_dst + res->write_res.count); ++ WARN_ON_ONCE(invalidate_inode_pages2_range(dst_inode->i_mapping, ++ pos_dst >> PAGE_SHIFT, ++ (pos_dst + res->write_res.count - 1) >> PAGE_SHIFT)); + + return res->write_res.count; + } diff --git a/queue-4.9/series b/queue-4.9/series index 14638b295ec..d6dfabe04e6 100644 --- a/queue-4.9/series +++ b/queue-4.9/series @@ -35,3 +35,4 @@ xen-netfront-disentangle-tx_skb_freelist.patch xen-netfront-don-t-trust-the-backend-response-data-blindly.patch tty-hvc-replace-bug_on-with-negative-return-value.patch shm-extend-forced-shm-destroy-to-support-objects-from-several-ipc-nses.patch +nfsv42-fix-pagecache-invalidation-after-copy-clone.patch