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, ©->cp_flags) ? - NFS_FILE_SYNC : NFS_UNSTABLE; - nfsd4_copy_set_sync(copy, sync); -- gen_boot_verifier(©->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, ©->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 = ©->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(©->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 = ©->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(©->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(©->cp_res.cb_stateid, ©->cp_stateid.cs_stid, -- sizeof(copy->cp_res.cb_stateid)); -+ memcpy(&result->cb_stateid, ©->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, ©->cp_flags) ?\n" - " \t\t\tNFS_FILE_SYNC : NFS_UNSTABLE;\n" - " \tnfsd4_copy_set_sync(copy, sync);\n" - "-\tgen_boot_verifier(©->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, ©->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 = ©->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(©->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 = ©->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(©->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(©->cp_res.cb_stateid, ©->cp_stateid.cs_stid,\n" - "-\t\t\tsizeof(copy->cp_res.cb_stateid));\n" - "+\t\tmemcpy(&result->cb_stateid, ©->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.