aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfsd
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2010-07-28 10:08:57 -0400
committerJ. Bruce Fields <bfields@redhat.com>2010-07-29 16:05:51 -0400
commitc3e480808685dd13f03af1a8fdda581dcb54d92c (patch)
tree80dc34d9cec1992a7aee96146ce668384aa7d30a /fs/nfsd
parentfa0a21269f807bb2e95b8b642c4a739714780172 (diff)
nfsd4: don't pretend to support write delegations
The delegation code mostly pretends to support either read or write delegations. However, correct support for write delegations would require, for example, breaking of delegations (and/or implementation of cb_getattr) on stat. Currently all that stops us from handing out delegations is a subtle reference-counting issue. Avoid confusion by adding an earlier check that explicitly refuses write delegations. For now, though, I'm not going so far as to rip out existing half-support for write delegations, in case we get around to using that soon. Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r--fs/nfsd/nfs4state.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
index 9cc3b786d56c..c07c9885f580 100644
--- a/fs/nfsd/nfs4state.c
+++ b/fs/nfsd/nfs4state.c
@@ -170,6 +170,13 @@ alloc_init_deleg(struct nfs4_client *clp, struct nfs4_stateid *stp, struct svc_f
170 struct nfs4_cb_conn *cb = &stp->st_stateowner->so_client->cl_cb_conn; 170 struct nfs4_cb_conn *cb = &stp->st_stateowner->so_client->cl_cb_conn;
171 171
172 dprintk("NFSD alloc_init_deleg\n"); 172 dprintk("NFSD alloc_init_deleg\n");
173 /*
174 * Major work on the lease subsystem (for example, to support
175 * calbacks on stat) will be required before we can support
176 * write delegations properly.
177 */
178 if (type != NFS4_OPEN_DELEGATE_READ)
179 return NULL;
173 if (fp->fi_had_conflict) 180 if (fp->fi_had_conflict)
174 return NULL; 181 return NULL;
175 if (num_delegations > max_delegations) 182 if (num_delegations > max_delegations)