aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/callback_proc.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2012-03-01 11:17:50 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2012-03-01 11:17:50 -0500
commit0cb3284b535bd5eacc287632b55150c8e5d9edc7 (patch)
treeef1bdc9d47837a16ff306c9c6fcfa2659511dc4b /fs/nfs/callback_proc.c
parenta59c30acfbe701dc991f4f84abce27818120a2ac (diff)
NFSv4.1: Get rid of NFS4CLNT_LAYOUTRECALL
The NFS4CLNT_LAYOUTRECALL bit is a long-term impediment to scalability. It basically stops all other recalls by a given server once any layout recall is requested. If the recall is for a different file, then we don't care. If the recall applies to the same file, then we're in one of two situations: Either we are in the case of a replay of an existing request, in which case the session is supposed to deal with matters, or we are dealing with a completely different request, in which case we should just try to process it. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/callback_proc.c')
-rw-r--r--fs/nfs/callback_proc.c6
1 files changed, 1 insertions, 5 deletions
diff --git a/fs/nfs/callback_proc.c b/fs/nfs/callback_proc.c
index f71978d107d0..0e0865e38065 100644
--- a/fs/nfs/callback_proc.c
+++ b/fs/nfs/callback_proc.c
@@ -233,17 +233,13 @@ static u32 initiate_bulk_draining(struct nfs_client *clp,
233static u32 do_callback_layoutrecall(struct nfs_client *clp, 233static u32 do_callback_layoutrecall(struct nfs_client *clp,
234 struct cb_layoutrecallargs *args) 234 struct cb_layoutrecallargs *args)
235{ 235{
236 u32 res = NFS4ERR_DELAY; 236 u32 res;
237 237
238 dprintk("%s enter, type=%i\n", __func__, args->cbl_recall_type); 238 dprintk("%s enter, type=%i\n", __func__, args->cbl_recall_type);
239 if (test_and_set_bit(NFS4CLNT_LAYOUTRECALL, &clp->cl_state))
240 goto out;
241 if (args->cbl_recall_type == RETURN_FILE) 239 if (args->cbl_recall_type == RETURN_FILE)
242 res = initiate_file_draining(clp, args); 240 res = initiate_file_draining(clp, args);
243 else 241 else
244 res = initiate_bulk_draining(clp, args); 242 res = initiate_bulk_draining(clp, args);
245 clear_bit(NFS4CLNT_LAYOUTRECALL, &clp->cl_state);
246out:
247 dprintk("%s returning %i\n", __func__, res); 243 dprintk("%s returning %i\n", __func__, res);
248 return res; 244 return res;
249 245