diff options
author | Neil Brown <neilb@suse.de> | 2005-09-13 04:25:37 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-13 11:22:31 -0400 |
commit | f2327d9adb1e948a7041128e971effd8d6e2d42c (patch) | |
tree | c71c0eaee80dac069b7bb4f7d2e14bcbcfee14fe /fs/nfsd/nfs4state.c | |
parent | 849823c52d9c96cf777038670bb0ee3a291ca69d (diff) |
[PATCH] nfsd4: move replay_owner
It seems more natural to move the setting of the replay_owner into the
relevant procedure instead of doing it in nfsv4_proc_compound.
Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/nfsd/nfs4state.c')
-rw-r--r-- | fs/nfsd/nfs4state.c | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 109fd8c3d4f5..11405e530e70 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -2286,7 +2286,7 @@ check_replay: | |||
2286 | } | 2286 | } |
2287 | 2287 | ||
2288 | int | 2288 | int |
2289 | nfsd4_open_confirm(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open_confirm *oc) | 2289 | nfsd4_open_confirm(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open_confirm *oc, struct nfs4_stateowner **replay_owner) |
2290 | { | 2290 | { |
2291 | int status; | 2291 | int status; |
2292 | struct nfs4_stateowner *sop; | 2292 | struct nfs4_stateowner *sop; |
@@ -2320,8 +2320,10 @@ nfsd4_open_confirm(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfs | |||
2320 | 2320 | ||
2321 | nfsd4_create_clid_dir(sop->so_client); | 2321 | nfsd4_create_clid_dir(sop->so_client); |
2322 | out: | 2322 | out: |
2323 | if (oc->oc_stateowner) | 2323 | if (oc->oc_stateowner) { |
2324 | nfs4_get_stateowner(oc->oc_stateowner); | 2324 | nfs4_get_stateowner(oc->oc_stateowner); |
2325 | *replay_owner = oc->oc_stateowner; | ||
2326 | } | ||
2325 | nfs4_unlock_state(); | 2327 | nfs4_unlock_state(); |
2326 | return status; | 2328 | return status; |
2327 | } | 2329 | } |
@@ -2352,7 +2354,7 @@ reset_union_bmap_deny(unsigned long deny, unsigned long *bmap) | |||
2352 | } | 2354 | } |
2353 | 2355 | ||
2354 | int | 2356 | int |
2355 | nfsd4_open_downgrade(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open_downgrade *od) | 2357 | nfsd4_open_downgrade(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_open_downgrade *od, struct nfs4_stateowner **replay_owner) |
2356 | { | 2358 | { |
2357 | int status; | 2359 | int status; |
2358 | struct nfs4_stateid *stp; | 2360 | struct nfs4_stateid *stp; |
@@ -2394,8 +2396,10 @@ nfsd4_open_downgrade(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct n | |||
2394 | memcpy(&od->od_stateid, &stp->st_stateid, sizeof(stateid_t)); | 2396 | memcpy(&od->od_stateid, &stp->st_stateid, sizeof(stateid_t)); |
2395 | status = nfs_ok; | 2397 | status = nfs_ok; |
2396 | out: | 2398 | out: |
2397 | if (od->od_stateowner) | 2399 | if (od->od_stateowner) { |
2398 | nfs4_get_stateowner(od->od_stateowner); | 2400 | nfs4_get_stateowner(od->od_stateowner); |
2401 | *replay_owner = od->od_stateowner; | ||
2402 | } | ||
2399 | nfs4_unlock_state(); | 2403 | nfs4_unlock_state(); |
2400 | return status; | 2404 | return status; |
2401 | } | 2405 | } |
@@ -2404,7 +2408,7 @@ out: | |||
2404 | * nfs4_unlock_state() called after encode | 2408 | * nfs4_unlock_state() called after encode |
2405 | */ | 2409 | */ |
2406 | int | 2410 | int |
2407 | nfsd4_close(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_close *close) | 2411 | nfsd4_close(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_close *close, struct nfs4_stateowner **replay_owner) |
2408 | { | 2412 | { |
2409 | int status; | 2413 | int status; |
2410 | struct nfs4_stateid *stp; | 2414 | struct nfs4_stateid *stp; |
@@ -2430,8 +2434,10 @@ nfsd4_close(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_clos | |||
2430 | /* release_state_owner() calls nfsd_close() if needed */ | 2434 | /* release_state_owner() calls nfsd_close() if needed */ |
2431 | release_state_owner(stp, OPEN_STATE); | 2435 | release_state_owner(stp, OPEN_STATE); |
2432 | out: | 2436 | out: |
2433 | if (close->cl_stateowner) | 2437 | if (close->cl_stateowner) { |
2434 | nfs4_get_stateowner(close->cl_stateowner); | 2438 | nfs4_get_stateowner(close->cl_stateowner); |
2439 | *replay_owner = close->cl_stateowner; | ||
2440 | } | ||
2435 | nfs4_unlock_state(); | 2441 | nfs4_unlock_state(); |
2436 | return status; | 2442 | return status; |
2437 | } | 2443 | } |
@@ -2675,7 +2681,7 @@ check_lock_length(u64 offset, u64 length) | |||
2675 | * LOCK operation | 2681 | * LOCK operation |
2676 | */ | 2682 | */ |
2677 | int | 2683 | int |
2678 | nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_lock *lock) | 2684 | nfsd4_lock(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_lock *lock, struct nfs4_stateowner **replay_owner) |
2679 | { | 2685 | { |
2680 | struct nfs4_stateowner *open_sop = NULL; | 2686 | struct nfs4_stateowner *open_sop = NULL; |
2681 | struct nfs4_stateid *lock_stp; | 2687 | struct nfs4_stateid *lock_stp; |
@@ -2835,8 +2841,10 @@ out_destroy_new_stateid: | |||
2835 | release_state_owner(lock_stp, LOCK_STATE); | 2841 | release_state_owner(lock_stp, LOCK_STATE); |
2836 | } | 2842 | } |
2837 | out: | 2843 | out: |
2838 | if (lock->lk_stateowner) | 2844 | if (lock->lk_stateowner) { |
2839 | nfs4_get_stateowner(lock->lk_stateowner); | 2845 | nfs4_get_stateowner(lock->lk_stateowner); |
2846 | *replay_owner = lock->lk_stateowner; | ||
2847 | } | ||
2840 | nfs4_unlock_state(); | 2848 | nfs4_unlock_state(); |
2841 | return status; | 2849 | return status; |
2842 | } | 2850 | } |
@@ -2925,7 +2933,7 @@ out: | |||
2925 | } | 2933 | } |
2926 | 2934 | ||
2927 | int | 2935 | int |
2928 | nfsd4_locku(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_locku *locku) | 2936 | nfsd4_locku(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_locku *locku, struct nfs4_stateowner **replay_owner) |
2929 | { | 2937 | { |
2930 | struct nfs4_stateid *stp; | 2938 | struct nfs4_stateid *stp; |
2931 | struct file *filp = NULL; | 2939 | struct file *filp = NULL; |
@@ -2981,8 +2989,10 @@ nfsd4_locku(struct svc_rqst *rqstp, struct svc_fh *current_fh, struct nfsd4_lock | |||
2981 | memcpy(&locku->lu_stateid, &stp->st_stateid, sizeof(stateid_t)); | 2989 | memcpy(&locku->lu_stateid, &stp->st_stateid, sizeof(stateid_t)); |
2982 | 2990 | ||
2983 | out: | 2991 | out: |
2984 | if (locku->lu_stateowner) | 2992 | if (locku->lu_stateowner) { |
2985 | nfs4_get_stateowner(locku->lu_stateowner); | 2993 | nfs4_get_stateowner(locku->lu_stateowner); |
2994 | *replay_owner = locku->lu_stateowner; | ||
2995 | } | ||
2986 | nfs4_unlock_state(); | 2996 | nfs4_unlock_state(); |
2987 | return status; | 2997 | return status; |
2988 | 2998 | ||