aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/nfs4state.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2005-10-18 17:20:13 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-10-18 17:20:13 -0400
commit83c9d41e456033000ccfadf535f3098d8739488d (patch)
tree09f5573ba348225bb7eed14c20b3305f49449e06 /fs/nfs/nfs4state.c
parente6dfa553cffcb9740f932311dff42f81d6ac63bb (diff)
NFSv4: Remove nfs4_client->cl_sem from close() path
We no longer need to worry about collisions between close() and the state recovery code, since the new close will automatically recheck the file state once it is done waiting on its sequence slot. Ditto for the nfs4_proc_locku() procedure. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/nfs4state.c')
-rw-r--r--fs/nfs/nfs4state.c9
1 files changed, 1 insertions, 8 deletions
diff --git a/fs/nfs/nfs4state.c b/fs/nfs/nfs4state.c
index 86c08c165ce7..bb3574361958 100644
--- a/fs/nfs/nfs4state.c
+++ b/fs/nfs/nfs4state.c
@@ -481,17 +481,15 @@ void nfs4_put_open_state(struct nfs4_state *state)
481} 481}
482 482
483/* 483/*
484 * Beware! Caller must be holding no references to clp->cl_sem! 484 * Close the current file.
485 */ 485 */
486void nfs4_close_state(struct nfs4_state *state, mode_t mode) 486void nfs4_close_state(struct nfs4_state *state, mode_t mode)
487{ 487{
488 struct inode *inode = state->inode; 488 struct inode *inode = state->inode;
489 struct nfs4_state_owner *owner = state->owner; 489 struct nfs4_state_owner *owner = state->owner;
490 struct nfs4_client *clp = owner->so_client;
491 int newstate; 490 int newstate;
492 491
493 atomic_inc(&owner->so_count); 492 atomic_inc(&owner->so_count);
494 down_read(&clp->cl_sem);
495 /* Protect against nfs4_find_state() */ 493 /* Protect against nfs4_find_state() */
496 spin_lock(&inode->i_lock); 494 spin_lock(&inode->i_lock);
497 if (mode & FMODE_READ) 495 if (mode & FMODE_READ)
@@ -523,7 +521,6 @@ void nfs4_close_state(struct nfs4_state *state, mode_t mode)
523out: 521out:
524 nfs4_put_open_state(state); 522 nfs4_put_open_state(state);
525 nfs4_put_state_owner(owner); 523 nfs4_put_state_owner(owner);
526 up_read(&clp->cl_sem);
527} 524}
528 525
529/* 526/*
@@ -704,8 +701,6 @@ void nfs_free_seqid(struct nfs_seqid *seqid)
704} 701}
705 702
706/* 703/*
707 * Called with clp->cl_sem held.
708 *
709 * Increment the seqid if the OPEN/OPEN_DOWNGRADE/CLOSE succeeded, or 704 * Increment the seqid if the OPEN/OPEN_DOWNGRADE/CLOSE succeeded, or
710 * failed with a seqid incrementing error - 705 * failed with a seqid incrementing error -
711 * see comments nfs_fs.h:seqid_mutating_error() 706 * see comments nfs_fs.h:seqid_mutating_error()
@@ -743,8 +738,6 @@ void nfs_increment_open_seqid(int status, struct nfs_seqid *seqid)
743} 738}
744 739
745/* 740/*
746 * Called with clp->cl_sem held.
747 *
748 * Increment the seqid if the LOCK/LOCKU succeeded, or 741 * Increment the seqid if the LOCK/LOCKU succeeded, or
749 * failed with a seqid incrementing error - 742 * failed with a seqid incrementing error -
750 * see comments nfs_fs.h:seqid_mutating_error() 743 * see comments nfs_fs.h:seqid_mutating_error()