Commit 0cb3284b535bd5eacc287632b55150c8e5d9edc7
1 parent
a59c30acfb
Exists in
smarc-l5.0.0_1.0.0-ga
and in
5 other branches
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>
Showing 2 changed files with 1 additions and 6 deletions Side-by-side Diff
fs/nfs/callback_proc.c
... | ... | @@ -233,17 +233,13 @@ |
233 | 233 | static u32 do_callback_layoutrecall(struct nfs_client *clp, |
234 | 234 | struct cb_layoutrecallargs *args) |
235 | 235 | { |
236 | - u32 res = NFS4ERR_DELAY; | |
236 | + u32 res; | |
237 | 237 | |
238 | 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 | 239 | if (args->cbl_recall_type == RETURN_FILE) |
242 | 240 | res = initiate_file_draining(clp, args); |
243 | 241 | else |
244 | 242 | res = initiate_bulk_draining(clp, args); |
245 | - clear_bit(NFS4CLNT_LAYOUTRECALL, &clp->cl_state); | |
246 | -out: | |
247 | 243 | dprintk("%s returning %i\n", __func__, res); |
248 | 244 | return res; |
249 | 245 |