diff options
-rw-r--r-- | fs/nfsd/state.h | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/fs/nfsd/state.h b/fs/nfsd/state.h index 2712042a66b1..8e85e07efce6 100644 --- a/fs/nfsd/state.h +++ b/fs/nfsd/state.h | |||
@@ -463,15 +463,19 @@ static inline struct nfs4_lockowner * lockowner(struct nfs4_stateowner *so) | |||
463 | /* | 463 | /* |
464 | * nfs4_file: a file opened by some number of (open) nfs4_stateowners. | 464 | * nfs4_file: a file opened by some number of (open) nfs4_stateowners. |
465 | * | 465 | * |
466 | * These objects are global. nfsd only keeps one instance of a nfs4_file per | 466 | * These objects are global. nfsd keeps one instance of a nfs4_file per |
467 | * inode (though it may keep multiple file descriptors open per inode). These | 467 | * filehandle (though it may keep multiple file descriptors for each). Each |
468 | * are tracked in the file_hashtbl which is protected by the state_lock | 468 | * inode can have multiple filehandles associated with it, so there is |
469 | * spinlock. | 469 | * (potentially) a many to one relationship between this struct and struct |
470 | * inode. | ||
471 | * | ||
472 | * These are hashed by filehandle in the file_hashtbl, which is protected by | ||
473 | * the global state_lock spinlock. | ||
470 | */ | 474 | */ |
471 | struct nfs4_file { | 475 | struct nfs4_file { |
472 | atomic_t fi_ref; | 476 | atomic_t fi_ref; |
473 | spinlock_t fi_lock; | 477 | spinlock_t fi_lock; |
474 | struct hlist_node fi_hash; /* hash by "struct inode *" */ | 478 | struct hlist_node fi_hash; /* hash on fi_fhandle */ |
475 | struct list_head fi_stateids; | 479 | struct list_head fi_stateids; |
476 | struct list_head fi_delegations; | 480 | struct list_head fi_delegations; |
477 | /* One each for O_RDONLY, O_WRONLY, O_RDWR: */ | 481 | /* One each for O_RDONLY, O_WRONLY, O_RDWR: */ |