| From ca857cc1d4cf17aba4bbb3b95d35454ad96924b3 Mon Sep 17 00:00:00 2001 |
| From: Trond Myklebust <trond.myklebust@primarydata.com> |
| Date: Tue, 28 Jun 2016 13:54:09 -0400 |
| Subject: NFS/pnfs: Do not clobber existing pgio_done_cb in nfs4_proc_read_setup |
| |
| From: Trond Myklebust <trond.myklebust@primarydata.com> |
| |
| commit ca857cc1d4cf17aba4bbb3b95d35454ad96924b3 upstream. |
| |
| If a pNFS client sets hdr->pgio_done_cb, then we should not overwrite that |
| in nfs4_proc_read_setup() |
| |
| Fixes: 75bf47ebf6b5 ("pNFS/flexfile: Fix erroneous fall back to...") |
| Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| fs/nfs/nfs4proc.c | 3 ++- |
| 1 file changed, 2 insertions(+), 1 deletion(-) |
| |
| --- a/fs/nfs/nfs4proc.c |
| +++ b/fs/nfs/nfs4proc.c |
| @@ -4393,7 +4393,8 @@ static void nfs4_proc_read_setup(struct |
| struct rpc_message *msg) |
| { |
| hdr->timestamp = jiffies; |
| - hdr->pgio_done_cb = nfs4_read_done_cb; |
| + if (!hdr->pgio_done_cb) |
| + hdr->pgio_done_cb = nfs4_read_done_cb; |
| msg->rpc_proc = &nfs4_procedures[NFSPROC4_CLNT_READ]; |
| nfs4_init_sequence(&hdr->args.seq_args, &hdr->res.seq_res, 0); |
| } |