All of lore.kernel.org
 help / color / mirror / Atom feed
diff for duplicates of <20241118212343.3935-3-cel@kernel.org>

diff --git a/a/1.txt b/N1/1.txt
index fc1cdd4..016e731 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -1,104 +1,123 @@
-From: Chuck Lever <chuck.lever@oracle.com>
+[ Sasha's backport helper bot ]
 
-[ Upstream commit 9ed666eba4e0a2bb8ffaa3739d830b64d4f2aaad ]
+Hi,
 
-Currently, when NFSD handles an asynchronous COPY, it returns a
-zero write verifier, relying on the subsequent CB_OFFLOAD callback
-to pass the write verifier and a stable_how4 value to the client.
+The upstream commit SHA1 provided is correct: 9ed666eba4e0a2bb8ffaa3739d830b64d4f2aaad
 
-However, if the CB_OFFLOAD never arrives at the client (for example,
-if a network partition occurs just as the server sends the
-CB_OFFLOAD operation), the client will never receive this verifier.
-Thus, if the client sends a follow-up COMMIT, there is no way for
-the client to assess the COMMIT result.
+WARNING: Author mismatch between patch and upstream commit:
+Backport author: cel@kernel.org
+Commit author: Chuck Lever <chuck.lever@oracle.com>
 
-The usual recovery for a missing CB_OFFLOAD is for the client to
-send an OFFLOAD_STATUS operation, but that operation does not carry
-a write verifier in its result. Neither does it carry a stable_how4
-value, so the client /must/ send a COMMIT in this case -- which will
-always fail because currently there's still no write verifier in the
-COPY result.
+Commit in newer trees:
 
-Thus the server needs to return a normal write verifier in its COPY
-result even if the COPY operation is to be performed asynchronously.
+|-----------------|----------------------------------------------|
+| 6.11.y          |  Present (different SHA1: ea5fb07d126d)      |
+| 6.6.y           |  Not found                                   |
+| 6.1.y           |  Not found                                   |
+| 5.15.y          |  Not found                                   |
+|-----------------|----------------------------------------------|
 
-If the server recognizes the callback stateid in subsequent
-OFFLOAD_STATUS operations, then obviously it has not restarted, and
-the write verifier the client received in the COPY result is still
-valid and can be used to assess a COMMIT of the copied data, if one
-is needed.
-
-Reviewed-by: Jeff Layton <jlayton@kernel.org>
-[ cel: adjusted to apply to origin/linux-5.15.y ]
-Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+Note: The patch differs from the upstream commit:
 ---
- fs/nfsd/nfs4proc.c | 25 +++++++++----------------
- 1 file changed, 9 insertions(+), 16 deletions(-)
-
-diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
-index 2b1fcf5b6bf8..08d90e0e8fae 100644
---- a/fs/nfsd/nfs4proc.c
-+++ b/fs/nfsd/nfs4proc.c
-@@ -718,15 +718,6 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- 			   &access->ac_supported);
- }
+--- -	2024-11-19 00:38:25.697325177 -0500
++++ /tmp/tmp.o3HOBpRnsr	2024-11-19 00:38:25.689059168 -0500
+@@ -1,3 +1,5 @@
++[ Upstream commit 9ed666eba4e0a2bb8ffaa3739d830b64d4f2aaad ]
++
+ Currently, when NFSD handles an asynchronous COPY, it returns a
+ zero write verifier, relying on the subsequent CB_OFFLOAD callback
+ to pass the write verifier and a stable_how4 value to the client.
+@@ -25,16 +27,17 @@
+ is needed.
  
--static void gen_boot_verifier(nfs4_verifier *verifier, struct net *net)
--{
--	__be32 *verf = (__be32 *)verifier->data;
--
--	BUILD_BUG_ON(2*sizeof(*verf) != sizeof(verifier->data));
--
--	nfsd_copy_write_verifier(verf, net_generic(net, nfsd_net_id));
--}
--
- static __be32
- nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- 	     union nfsd4_op_u *u)
-@@ -1594,7 +1585,6 @@ static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync)
- 		test_bit(NFSD4_COPY_F_COMMITTED, &copy->cp_flags) ?
- 			NFS_FILE_SYNC : NFS_UNSTABLE;
- 	nfsd4_copy_set_sync(copy, sync);
--	gen_boot_verifier(&copy->cp_res.wr_verifier, copy->cp_clp->net);
- }
+ Reviewed-by: Jeff Layton <jlayton@kernel.org>
++[ cel: adjusted to apply to origin/linux-5.15.y ]
+ Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
+ ---
+- fs/nfsd/nfs4proc.c | 23 ++++++++---------------
+- 1 file changed, 8 insertions(+), 15 deletions(-)
++ fs/nfsd/nfs4proc.c | 25 +++++++++----------------
++ 1 file changed, 9 insertions(+), 16 deletions(-)
  
- static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy,
-@@ -1765,9 +1755,14 @@ static __be32
- nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- 		union nfsd4_op_u *u)
- {
--	struct nfsd4_copy *copy = &u->copy;
--	__be32 status;
-+	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
- 	struct nfsd4_copy *async_copy = NULL;
-+	struct nfsd4_copy *copy = &u->copy;
-+	struct nfsd42_write_res *result;
-+	__be32 status;
+ diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c
+-index 963a02e179a0a..231c6035602f6 100644
++index 2b1fcf5b6bf8..08d90e0e8fae 100644
+ --- a/fs/nfsd/nfs4proc.c
+ +++ b/fs/nfsd/nfs4proc.c
+-@@ -752,15 +752,6 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
++@@ -718,15 +718,6 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+  			   &access->ac_supported);
+  }
+  
+@@ -50,7 +53,7 @@
+  static __be32
+  nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+  	     union nfsd4_op_u *u)
+-@@ -1632,7 +1623,6 @@ static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync)
++@@ -1594,7 +1585,6 @@ static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync)
+  		test_bit(NFSD4_COPY_F_COMMITTED, &copy->cp_flags) ?
+  			NFS_FILE_SYNC : NFS_UNSTABLE;
+  	nfsd4_copy_set_sync(copy, sync);
+@@ -58,30 +61,24 @@
+  }
+  
+  static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy,
+-@@ -1805,9 +1795,11 @@ static __be32
++@@ -1765,9 +1755,14 @@ static __be32
+  nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+  		union nfsd4_op_u *u)
+  {
++-	struct nfsd4_copy *copy = &u->copy;
++-	__be32 status;
+ +	struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
+-+	struct nfsd4_copy *async_copy = NULL;
+- 	struct nfsd4_copy *copy = &u->copy;
++ 	struct nfsd4_copy *async_copy = NULL;
+++	struct nfsd4_copy *copy = &u->copy;
+ +	struct nfsd42_write_res *result;
+- 	__be32 status;
+--	struct nfsd4_copy *async_copy = NULL;
+- 
+- 	/*
+- 	 * Currently, async COPY is not reliable. Force all COPY
+-@@ -1816,6 +1808,9 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+- 	 */
+- 	nfsd4_copy_set_sync(copy, true);
+- 
+++	__be32 status;
+++
+ +	result = &copy->cp_res;
+ +	nfsd_copy_write_verifier((__be32 *)&result->wr_verifier.data, nn);
+-+
++ 
+  	copy->cp_clp = cstate->clp;
+  	if (nfsd4_ssc_is_inter(copy)) {
+- 		trace_nfsd_copy_inter(copy);
+-@@ -1840,8 +1835,6 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
++@@ -1787,8 +1782,6 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+  	memcpy(&copy->fh, &cstate->current_fh.fh_handle,
+  		sizeof(struct knfsd_fh));
+  	if (nfsd4_copy_is_async(copy)) {
+@@ -90,7 +87,7 @@
+  		status = nfserrno(-ENOMEM);
+  		async_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);
+  		if (!async_copy)
+-@@ -1853,8 +1846,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
++@@ -1800,8 +1793,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
+  			goto out_err;
+  		if (!nfs4_init_copy_state(nn, copy))
+  			goto out_err;
+@@ -101,3 +98,6 @@
+  		dup_copy_fields(copy, async_copy);
+  		async_copy->copy_task = kthread_create(nfsd4_do_async_copy,
+  				async_copy, "%s", "copy thread");
++-- 
++2.47.0
 +
-+	result = &copy->cp_res;
-+	nfsd_copy_write_verifier((__be32 *)&result->wr_verifier.data, nn);
- 
- 	copy->cp_clp = cstate->clp;
- 	if (nfsd4_ssc_is_inter(copy)) {
-@@ -1787,8 +1782,6 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- 	memcpy(&copy->fh, &cstate->current_fh.fh_handle,
- 		sizeof(struct knfsd_fh));
- 	if (nfsd4_copy_is_async(copy)) {
--		struct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);
--
- 		status = nfserrno(-ENOMEM);
- 		async_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);
- 		if (!async_copy)
-@@ -1800,8 +1793,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,
- 			goto out_err;
- 		if (!nfs4_init_copy_state(nn, copy))
- 			goto out_err;
--		memcpy(&copy->cp_res.cb_stateid, &copy->cp_stateid.cs_stid,
--			sizeof(copy->cp_res.cb_stateid));
-+		memcpy(&result->cb_stateid, &copy->cp_stateid.cs_stid,
-+			sizeof(result->cb_stateid));
- 		dup_copy_fields(copy, async_copy);
- 		async_copy->copy_task = kthread_create(nfsd4_do_async_copy,
- 				async_copy, "%s", "copy thread");
--- 
-2.47.0
+---
+
+Results of testing on various branches:
+
+| Branch                    | Patch Apply | Build Test |
+|---------------------------|-------------|------------|
+| stable/linux-5.15.y       |  Success    |  Success   |
diff --git a/a/content_digest b/N1/content_digest
index 347fe2d..e037130 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -1,116 +1,133 @@
- "ref\020241118212343.3935-1-cel@kernel.org\0"
- "From\0cel@kernel.org\0"
- "Subject\0[PATCH 5.15 2/5] NFSD: Async COPY result needs to return a write verifier\0"
- "Date\0Mon, 18 Nov 2024 16:23:40 -0500\0"
- "To\0<stable@vger.kernel.org>\0"
- "Cc\0<linux-nfs@vger.kernel.org>"
-  Jeff Layton <jlayton@kernel.org>
- " Chuck Lever <chuck.lever@oracle.com>\0"
+ "From\0Sasha Levin <sashal@kernel.org>\0"
+ "Subject\0Re: [PATCH 5.15 2/5] NFSD: Async COPY result needs to return a write verifier\0"
+ "Date\0Tue, 19 Nov 2024 07:31:23 -0500\0"
+ "To\0stable@vger.kernel.org\0"
+ "Cc\0cel@kernel.org"
+ " Sasha Levin <sashal@kernel.org>\0"
  "\00:1\0"
  "b\0"
- "From: Chuck Lever <chuck.lever@oracle.com>\n"
+ "[ Sasha's backport helper bot ]\n"
  "\n"
- "[ Upstream commit 9ed666eba4e0a2bb8ffaa3739d830b64d4f2aaad ]\n"
+ "Hi,\n"
  "\n"
- "Currently, when NFSD handles an asynchronous COPY, it returns a\n"
- "zero write verifier, relying on the subsequent CB_OFFLOAD callback\n"
- "to pass the write verifier and a stable_how4 value to the client.\n"
+ "The upstream commit SHA1 provided is correct: 9ed666eba4e0a2bb8ffaa3739d830b64d4f2aaad\n"
  "\n"
- "However, if the CB_OFFLOAD never arrives at the client (for example,\n"
- "if a network partition occurs just as the server sends the\n"
- "CB_OFFLOAD operation), the client will never receive this verifier.\n"
- "Thus, if the client sends a follow-up COMMIT, there is no way for\n"
- "the client to assess the COMMIT result.\n"
+ "WARNING: Author mismatch between patch and upstream commit:\n"
+ "Backport author: cel@kernel.org\n"
+ "Commit author: Chuck Lever <chuck.lever@oracle.com>\n"
  "\n"
- "The usual recovery for a missing CB_OFFLOAD is for the client to\n"
- "send an OFFLOAD_STATUS operation, but that operation does not carry\n"
- "a write verifier in its result. Neither does it carry a stable_how4\n"
- "value, so the client /must/ send a COMMIT in this case -- which will\n"
- "always fail because currently there's still no write verifier in the\n"
- "COPY result.\n"
+ "Commit in newer trees:\n"
  "\n"
- "Thus the server needs to return a normal write verifier in its COPY\n"
- "result even if the COPY operation is to be performed asynchronously.\n"
+ "|-----------------|----------------------------------------------|\n"
+ "| 6.11.y          |  Present (different SHA1: ea5fb07d126d)      |\n"
+ "| 6.6.y           |  Not found                                   |\n"
+ "| 6.1.y           |  Not found                                   |\n"
+ "| 5.15.y          |  Not found                                   |\n"
+ "|-----------------|----------------------------------------------|\n"
  "\n"
- "If the server recognizes the callback stateid in subsequent\n"
- "OFFLOAD_STATUS operations, then obviously it has not restarted, and\n"
- "the write verifier the client received in the COPY result is still\n"
- "valid and can be used to assess a COMMIT of the copied data, if one\n"
- "is needed.\n"
- "\n"
- "Reviewed-by: Jeff Layton <jlayton@kernel.org>\n"
- "[ cel: adjusted to apply to origin/linux-5.15.y ]\n"
- "Signed-off-by: Chuck Lever <chuck.lever@oracle.com>\n"
+ "Note: The patch differs from the upstream commit:\n"
  "---\n"
- " fs/nfsd/nfs4proc.c | 25 +++++++++----------------\n"
- " 1 file changed, 9 insertions(+), 16 deletions(-)\n"
- "\n"
- "diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c\n"
- "index 2b1fcf5b6bf8..08d90e0e8fae 100644\n"
- "--- a/fs/nfsd/nfs4proc.c\n"
- "+++ b/fs/nfsd/nfs4proc.c\n"
- "@@ -718,15 +718,6 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
- " \t\t\t   &access->ac_supported);\n"
- " }\n"
+ "--- -\t2024-11-19 00:38:25.697325177 -0500\n"
+ "+++ /tmp/tmp.o3HOBpRnsr\t2024-11-19 00:38:25.689059168 -0500\n"
+ "@@ -1,3 +1,5 @@\n"
+ "+[ Upstream commit 9ed666eba4e0a2bb8ffaa3739d830b64d4f2aaad ]\n"
+ "+\n"
+ " Currently, when NFSD handles an asynchronous COPY, it returns a\n"
+ " zero write verifier, relying on the subsequent CB_OFFLOAD callback\n"
+ " to pass the write verifier and a stable_how4 value to the client.\n"
+ "@@ -25,16 +27,17 @@\n"
+ " is needed.\n"
  " \n"
- "-static void gen_boot_verifier(nfs4_verifier *verifier, struct net *net)\n"
- "-{\n"
- "-\t__be32 *verf = (__be32 *)verifier->data;\n"
- "-\n"
- "-\tBUILD_BUG_ON(2*sizeof(*verf) != sizeof(verifier->data));\n"
- "-\n"
- "-\tnfsd_copy_write_verifier(verf, net_generic(net, nfsd_net_id));\n"
- "-}\n"
- "-\n"
- " static __be32\n"
- " nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
- " \t     union nfsd4_op_u *u)\n"
- "@@ -1594,7 +1585,6 @@ static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync)\n"
- " \t\ttest_bit(NFSD4_COPY_F_COMMITTED, &copy->cp_flags) ?\n"
- " \t\t\tNFS_FILE_SYNC : NFS_UNSTABLE;\n"
- " \tnfsd4_copy_set_sync(copy, sync);\n"
- "-\tgen_boot_verifier(&copy->cp_res.wr_verifier, copy->cp_clp->net);\n"
- " }\n"
+ " Reviewed-by: Jeff Layton <jlayton@kernel.org>\n"
+ "+[ cel: adjusted to apply to origin/linux-5.15.y ]\n"
+ " Signed-off-by: Chuck Lever <chuck.lever@oracle.com>\n"
+ " ---\n"
+ "- fs/nfsd/nfs4proc.c | 23 ++++++++---------------\n"
+ "- 1 file changed, 8 insertions(+), 15 deletions(-)\n"
+ "+ fs/nfsd/nfs4proc.c | 25 +++++++++----------------\n"
+ "+ 1 file changed, 9 insertions(+), 16 deletions(-)\n"
  " \n"
- " static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy,\n"
- "@@ -1765,9 +1755,14 @@ static __be32\n"
- " nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
- " \t\tunion nfsd4_op_u *u)\n"
- " {\n"
- "-\tstruct nfsd4_copy *copy = &u->copy;\n"
- "-\t__be32 status;\n"
- "+\tstruct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);\n"
- " \tstruct nfsd4_copy *async_copy = NULL;\n"
- "+\tstruct nfsd4_copy *copy = &u->copy;\n"
- "+\tstruct nfsd42_write_res *result;\n"
- "+\t__be32 status;\n"
+ " diff --git a/fs/nfsd/nfs4proc.c b/fs/nfsd/nfs4proc.c\n"
+ "-index 963a02e179a0a..231c6035602f6 100644\n"
+ "+index 2b1fcf5b6bf8..08d90e0e8fae 100644\n"
+ " --- a/fs/nfsd/nfs4proc.c\n"
+ " +++ b/fs/nfsd/nfs4proc.c\n"
+ "-@@ -752,15 +752,6 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "+@@ -718,15 +718,6 @@ nfsd4_access(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "  \t\t\t   &access->ac_supported);\n"
+ "  }\n"
+ "  \n"
+ "@@ -50,7 +53,7 @@\n"
+ "  static __be32\n"
+ "  nfsd4_commit(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "  \t     union nfsd4_op_u *u)\n"
+ "-@@ -1632,7 +1623,6 @@ static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync)\n"
+ "+@@ -1594,7 +1585,6 @@ static void nfsd4_init_copy_res(struct nfsd4_copy *copy, bool sync)\n"
+ "  \t\ttest_bit(NFSD4_COPY_F_COMMITTED, &copy->cp_flags) ?\n"
+ "  \t\t\tNFS_FILE_SYNC : NFS_UNSTABLE;\n"
+ "  \tnfsd4_copy_set_sync(copy, sync);\n"
+ "@@ -58,30 +61,24 @@\n"
+ "  }\n"
+ "  \n"
+ "  static ssize_t _nfsd_copy_file_range(struct nfsd4_copy *copy,\n"
+ "-@@ -1805,9 +1795,11 @@ static __be32\n"
+ "+@@ -1765,9 +1755,14 @@ static __be32\n"
+ "  nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "  \t\tunion nfsd4_op_u *u)\n"
+ "  {\n"
+ "+-\tstruct nfsd4_copy *copy = &u->copy;\n"
+ "+-\t__be32 status;\n"
+ " +\tstruct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);\n"
+ "-+\tstruct nfsd4_copy *async_copy = NULL;\n"
+ "- \tstruct nfsd4_copy *copy = &u->copy;\n"
+ "+ \tstruct nfsd4_copy *async_copy = NULL;\n"
+ "++\tstruct nfsd4_copy *copy = &u->copy;\n"
+ " +\tstruct nfsd42_write_res *result;\n"
+ "- \t__be32 status;\n"
+ "--\tstruct nfsd4_copy *async_copy = NULL;\n"
+ "- \n"
+ "- \t/*\n"
+ "- \t * Currently, async COPY is not reliable. Force all COPY\n"
+ "-@@ -1816,6 +1808,9 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "- \t */\n"
+ "- \tnfsd4_copy_set_sync(copy, true);\n"
+ "- \n"
+ "++\t__be32 status;\n"
+ "++\n"
+ " +\tresult = &copy->cp_res;\n"
+ " +\tnfsd_copy_write_verifier((__be32 *)&result->wr_verifier.data, nn);\n"
+ "-+\n"
+ "+ \n"
+ "  \tcopy->cp_clp = cstate->clp;\n"
+ "  \tif (nfsd4_ssc_is_inter(copy)) {\n"
+ "- \t\ttrace_nfsd_copy_inter(copy);\n"
+ "-@@ -1840,8 +1835,6 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "+@@ -1787,8 +1782,6 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "  \tmemcpy(&copy->fh, &cstate->current_fh.fh_handle,\n"
+ "  \t\tsizeof(struct knfsd_fh));\n"
+ "  \tif (nfsd4_copy_is_async(copy)) {\n"
+ "@@ -90,7 +87,7 @@\n"
+ "  \t\tstatus = nfserrno(-ENOMEM);\n"
+ "  \t\tasync_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);\n"
+ "  \t\tif (!async_copy)\n"
+ "-@@ -1853,8 +1846,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "+@@ -1800,8 +1793,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
+ "  \t\t\tgoto out_err;\n"
+ "  \t\tif (!nfs4_init_copy_state(nn, copy))\n"
+ "  \t\t\tgoto out_err;\n"
+ "@@ -101,3 +98,6 @@\n"
+ "  \t\tdup_copy_fields(copy, async_copy);\n"
+ "  \t\tasync_copy->copy_task = kthread_create(nfsd4_do_async_copy,\n"
+ "  \t\t\t\tasync_copy, \"%s\", \"copy thread\");\n"
+ "+-- \n"
+ "+2.47.0\n"
  "+\n"
- "+\tresult = &copy->cp_res;\n"
- "+\tnfsd_copy_write_verifier((__be32 *)&result->wr_verifier.data, nn);\n"
- " \n"
- " \tcopy->cp_clp = cstate->clp;\n"
- " \tif (nfsd4_ssc_is_inter(copy)) {\n"
- "@@ -1787,8 +1782,6 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
- " \tmemcpy(&copy->fh, &cstate->current_fh.fh_handle,\n"
- " \t\tsizeof(struct knfsd_fh));\n"
- " \tif (nfsd4_copy_is_async(copy)) {\n"
- "-\t\tstruct nfsd_net *nn = net_generic(SVC_NET(rqstp), nfsd_net_id);\n"
- "-\n"
- " \t\tstatus = nfserrno(-ENOMEM);\n"
- " \t\tasync_copy = kzalloc(sizeof(struct nfsd4_copy), GFP_KERNEL);\n"
- " \t\tif (!async_copy)\n"
- "@@ -1800,8 +1793,8 @@ nfsd4_copy(struct svc_rqst *rqstp, struct nfsd4_compound_state *cstate,\n"
- " \t\t\tgoto out_err;\n"
- " \t\tif (!nfs4_init_copy_state(nn, copy))\n"
- " \t\t\tgoto out_err;\n"
- "-\t\tmemcpy(&copy->cp_res.cb_stateid, &copy->cp_stateid.cs_stid,\n"
- "-\t\t\tsizeof(copy->cp_res.cb_stateid));\n"
- "+\t\tmemcpy(&result->cb_stateid, &copy->cp_stateid.cs_stid,\n"
- "+\t\t\tsizeof(result->cb_stateid));\n"
- " \t\tdup_copy_fields(copy, async_copy);\n"
- " \t\tasync_copy->copy_task = kthread_create(nfsd4_do_async_copy,\n"
- " \t\t\t\tasync_copy, \"%s\", \"copy thread\");\n"
- "-- \n"
- 2.47.0
+ "---\n"
+ "\n"
+ "Results of testing on various branches:\n"
+ "\n"
+ "| Branch                    | Patch Apply | Build Test |\n"
+ "|---------------------------|-------------|------------|\n"
+ | stable/linux-5.15.y       |  Success    |  Success   |
 
-749b41fbb4e2fcb03113aeb5f31951b6ebf1e487b2ee2f67bf41d8e27f64f954
+cc93e02fc106e72aab539e8630b04bca1931e492c0d5bcd97ec615dd84de84aa

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.