From: Greg Kroah-Hartman Date: Wed, 1 Dec 2021 09:17:07 +0000 (+0100) Subject: 5.4-stable patches X-Git-Tag: v4.4.294~68 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=d55c8b68bdab42bd776ba82e269bbba6325d76d0;p=thirdparty%2Fkernel%2Fstable-queue.git 5.4-stable patches added patches: nfsv42-fix-pagecache-invalidation-after-copy-clone.patch --- diff --git a/queue-5.4/nfsv42-fix-pagecache-invalidation-after-copy-clone.patch b/queue-5.4/nfsv42-fix-pagecache-invalidation-after-copy-clone.patch new file mode 100644 index 00000000000..0eb5408c0c8 --- /dev/null +++ b/queue-5.4/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 +@@ -295,8 +295,9 @@ static ssize_t _nfs42_proc_copy(struct f + goto out; + } + +- 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)); + + status = res->write_res.count; + out: diff --git a/queue-5.4/series b/queue-5.4/series new file mode 100644 index 00000000000..65e6880e7ab --- /dev/null +++ b/queue-5.4/series @@ -0,0 +1 @@ +nfsv42-fix-pagecache-invalidation-after-copy-clone.patch