diff options
author | J. Bruce Fields <bfields@redhat.com> | 2018-02-21 21:27:28 +0100 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2018-03-20 22:51:13 +0100 |
commit | 86d29b10eb666f72da70bd5cf9c80b4446270c8c (patch) | |
tree | 31d6af62424fb6dc424a8ef3067a6e5c9267644d /fs/nfsd/nfs4state.c | |
parent | nfsd: factor out common delegation-destruction code (diff) | |
download | linux-86d29b10eb666f72da70bd5cf9c80b4446270c8c.tar.xz linux-86d29b10eb666f72da70bd5cf9c80b4446270c8c.zip |
nfsd: move sc_file assignment into alloc_init_deleg
Take an easy chance to simplify the caller a little.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Reviewed-by: Jeff Layton <jlayton@kernel.org>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 5bbe86c6f1cb..fdcebfce5fdb 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c @@ -807,7 +807,8 @@ static void block_delegations(struct knfsd_fh *fh) } static struct nfs4_delegation * -alloc_init_deleg(struct nfs4_client *clp, struct svc_fh *current_fh, +alloc_init_deleg(struct nfs4_client *clp, struct nfs4_file *fp, + struct svc_fh *current_fh, struct nfs4_clnt_odstate *odstate) { struct nfs4_delegation *dp; @@ -838,6 +839,8 @@ alloc_init_deleg(struct nfs4_client *clp, struct svc_fh *current_fh, dp->dl_retries = 1; nfsd4_init_cb(&dp->dl_recall, dp->dl_stid.sc_client, &nfsd4_cb_recall_ops, NFSPROC4_CLNT_CB_RECALL); + get_nfs4_file(fp); + dp->dl_stid.sc_file = fp; return dp; out_dec: atomic_long_dec(&num_delegations); @@ -4400,13 +4403,10 @@ nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh, if (status) return ERR_PTR(status); - dp = alloc_init_deleg(clp, fh, odstate); + dp = alloc_init_deleg(clp, fp, fh, odstate); if (!dp) return ERR_PTR(-ENOMEM); - get_nfs4_file(fp); - dp->dl_stid.sc_file = fp; - spin_lock(&state_lock); spin_lock(&fp->fi_lock); if (!fp->fi_deleg_file) { |