All of lore.kernel.org
 help / color / mirror / Atom feed
* Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow
@ 2021-11-29 18:41 Benjamin Coddington
  2021-11-29 18:41 ` [stable v4.14 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE Benjamin Coddington
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Benjamin Coddington @ 2021-11-29 18:41 UTC (permalink / raw)
  To: stable; +Cc: trond.myklebust, bcodding, gregkh

The five patches referencing this cover letter are backports of upstream
fix "3f015d89a47c NFSv42: Fix pagecache invalidation after COPY/CLONE",
which did not apply cleanly to longterm trees.

Note: while the upstream fix received extensive testing, these backports
have been build-tested only.

Benjamin Coddington (1):
  NFSv42: Fix pagecache invalidation after COPY/CLONE

 fs/nfs/nfs42proc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

-- 
2.31.1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [stable v4.14 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE
  2021-11-29 18:41 Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Benjamin Coddington
@ 2021-11-29 18:41 ` Benjamin Coddington
  2021-11-29 18:41 ` [stable v4.19 " Benjamin Coddington
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Benjamin Coddington @ 2021-11-29 18:41 UTC (permalink / raw)
  To: stable; +Cc: trond.myklebust, bcodding, gregkh

Upstream commit 3f015d89a47cd8855cd92f71fff770095bd885a1 backported for
stable v4.14:

8<----------------------------------------------------------------------

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: <stable@vger.kernel.org> # v4.7+
Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
---
 fs/nfs/nfs42proc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index a61792f777be..394503c79faf 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -186,8 +186,9 @@ static ssize_t _nfs42_proc_copy(struct file *src,
 		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:
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [stable v4.19 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE
  2021-11-29 18:41 Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Benjamin Coddington
  2021-11-29 18:41 ` [stable v4.14 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE Benjamin Coddington
@ 2021-11-29 18:41 ` Benjamin Coddington
  2021-11-29 18:41 ` [stable v4.9 " Benjamin Coddington
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Benjamin Coddington @ 2021-11-29 18:41 UTC (permalink / raw)
  To: stable; +Cc: trond.myklebust, bcodding, gregkh

Upstream commit 3f015d89a47cd8855cd92f71fff770095bd885a1 backported for
stable v4.19:

8<----------------------------------------------------------------------


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: <stable@vger.kernel.org> # v4.7+
Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
---
 fs/nfs/nfs42proc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index be252795a6f7..5b1d452e640b 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -295,8 +295,9 @@ static ssize_t _nfs42_proc_copy(struct file *src,
 			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:
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [stable v4.9 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE
  2021-11-29 18:41 Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Benjamin Coddington
  2021-11-29 18:41 ` [stable v4.14 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE Benjamin Coddington
  2021-11-29 18:41 ` [stable v4.19 " Benjamin Coddington
@ 2021-11-29 18:41 ` Benjamin Coddington
  2021-11-29 18:41 ` [stable v5.10 " Benjamin Coddington
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Benjamin Coddington @ 2021-11-29 18:41 UTC (permalink / raw)
  To: stable; +Cc: trond.myklebust, bcodding, gregkh

Upstream commit 3f015d89a47cd8855cd92f71fff770095bd885a1 backported for
stable v4.9:

8<----------------------------------------------------------------------

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: <stable@vger.kernel.org> # v4.7+
Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
---
 fs/nfs/nfs42proc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index 7efb9e0e9f25..3038cefff15c 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -181,8 +181,9 @@ static ssize_t _nfs42_proc_copy(struct file *src,
 			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;
 }
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [stable v5.10 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE
  2021-11-29 18:41 Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Benjamin Coddington
                   ` (2 preceding siblings ...)
  2021-11-29 18:41 ` [stable v4.9 " Benjamin Coddington
@ 2021-11-29 18:41 ` Benjamin Coddington
  2021-11-29 18:41 ` [stable v5.4 " Benjamin Coddington
  2021-12-01  9:13 ` Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Greg KH
  5 siblings, 0 replies; 7+ messages in thread
From: Benjamin Coddington @ 2021-11-29 18:41 UTC (permalink / raw)
  To: stable; +Cc: trond.myklebust, bcodding, gregkh

Upstream commit 3f015d89a47cd8855cd92f71fff770095bd885a1 backported for
stable v5.10:

8<----------------------------------------------------------------------

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: <stable@vger.kernel.org> # v4.7+
Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
---
 fs/nfs/nfs42proc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index 4ebcd9dd1535..2587b1b8e2ef 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -362,8 +362,9 @@ static ssize_t _nfs42_proc_copy(struct file *src,
 			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));
 	spin_lock(&dst_inode->i_lock);
 	NFS_I(dst_inode)->cache_validity |= (NFS_INO_REVAL_PAGECACHE |
 			NFS_INO_REVAL_FORCED | NFS_INO_INVALID_SIZE |
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [stable v5.4 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE
  2021-11-29 18:41 Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Benjamin Coddington
                   ` (3 preceding siblings ...)
  2021-11-29 18:41 ` [stable v5.10 " Benjamin Coddington
@ 2021-11-29 18:41 ` Benjamin Coddington
  2021-12-01  9:13 ` Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Greg KH
  5 siblings, 0 replies; 7+ messages in thread
From: Benjamin Coddington @ 2021-11-29 18:41 UTC (permalink / raw)
  To: stable; +Cc: trond.myklebust, bcodding, gregkh

Upstream commit 3f015d89a47cd8855cd92f71fff770095bd885a1 backported for
stable v5.4:

8<----------------------------------------------------------------------

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: <stable@vger.kernel.org> # v4.7+
Fixes: 2e72448b07dc ("NFS: Add COPY nfs operation")
Signed-off-by: Benjamin Coddington <bcodding@redhat.com>
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
---
 fs/nfs/nfs42proc.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/fs/nfs/nfs42proc.c b/fs/nfs/nfs42proc.c
index 6b7c926824ae..504812ea4bc2 100644
--- a/fs/nfs/nfs42proc.c
+++ b/fs/nfs/nfs42proc.c
@@ -295,8 +295,9 @@ static ssize_t _nfs42_proc_copy(struct file *src,
 			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:
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow
  2021-11-29 18:41 Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Benjamin Coddington
                   ` (4 preceding siblings ...)
  2021-11-29 18:41 ` [stable v5.4 " Benjamin Coddington
@ 2021-12-01  9:13 ` Greg KH
  5 siblings, 0 replies; 7+ messages in thread
From: Greg KH @ 2021-12-01  9:13 UTC (permalink / raw)
  To: Benjamin Coddington; +Cc: stable, trond.myklebust

On Mon, Nov 29, 2021 at 01:41:47PM -0500, Benjamin Coddington wrote:
> The five patches referencing this cover letter are backports of upstream
> fix "3f015d89a47c NFSv42: Fix pagecache invalidation after COPY/CLONE",
> which did not apply cleanly to longterm trees.
> 
> Note: while the upstream fix received extensive testing, these backports
> have been build-tested only.
> 
> Benjamin Coddington (1):
>   NFSv42: Fix pagecache invalidation after COPY/CLONE
> 
>  fs/nfs/nfs42proc.c | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
> 
> -- 
> 2.31.1
> 

All now queued up, thanks!

greg k-h

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2021-12-01  9:13 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-29 18:41 Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Benjamin Coddington
2021-11-29 18:41 ` [stable v4.14 PATCH] NFSv42: Fix pagecache invalidation after COPY/CLONE Benjamin Coddington
2021-11-29 18:41 ` [stable v4.19 " Benjamin Coddington
2021-11-29 18:41 ` [stable v4.9 " Benjamin Coddington
2021-11-29 18:41 ` [stable v5.10 " Benjamin Coddington
2021-11-29 18:41 ` [stable v5.4 " Benjamin Coddington
2021-12-01  9:13 ` Patches for upstream 3f015d89a47c NFS COPY/CLONE - stable versions follow Greg KH

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.