diff options
author | J. Bruce Fields <bfields@redhat.com> | 2013-08-23 17:55:18 -0400 |
---|---|---|
committer | J. Bruce Fields <bfields@redhat.com> | 2013-08-30 17:30:45 -0400 |
commit | 3477565e6a73da7bb50fce6ac718b31eddb37fbb (patch) | |
tree | a11a9b5d1fae7f6ca5e527d12f66aa7d1826a0a2 /fs/nfsd | |
parent | b8297cec2da30d3a5869597dbd7c8280d46a7dba (diff) |
Revert "nfsd: nfs4_file_get_access: need to be more careful with O_RDWR"
This reverts commit df66e75395c839c3a373bae897dbb1248f741b45.
nfsd4_lock can get a read-only or write-only reference when only a
read-write open is available. This is normal.
Cc: Harshula Jayasuriya <harshula@redhat.com>
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Diffstat (limited to 'fs/nfsd')
-rw-r--r-- | fs/nfsd/nfs4state.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c index 5e609b17ada4..eb9cf818002a 100644 --- a/fs/nfsd/nfs4state.c +++ b/fs/nfsd/nfs4state.c | |||
@@ -282,14 +282,19 @@ static unsigned int file_hashval(struct inode *ino) | |||
282 | 282 | ||
283 | static struct hlist_head file_hashtbl[FILE_HASH_SIZE]; | 283 | static struct hlist_head file_hashtbl[FILE_HASH_SIZE]; |
284 | 284 | ||
285 | static void __nfs4_file_get_access(struct nfs4_file *fp, int oflag) | ||
286 | { | ||
287 | WARN_ON_ONCE(!(fp->fi_fds[oflag] || fp->fi_fds[O_RDWR])); | ||
288 | atomic_inc(&fp->fi_access[oflag]); | ||
289 | } | ||
290 | |||
285 | static void nfs4_file_get_access(struct nfs4_file *fp, int oflag) | 291 | static void nfs4_file_get_access(struct nfs4_file *fp, int oflag) |
286 | { | 292 | { |
287 | WARN_ON_ONCE(!fp->fi_fds[oflag]); | ||
288 | if (oflag == O_RDWR) { | 293 | if (oflag == O_RDWR) { |
289 | atomic_inc(&fp->fi_access[O_RDONLY]); | 294 | __nfs4_file_get_access(fp, O_RDONLY); |
290 | atomic_inc(&fp->fi_access[O_WRONLY]); | 295 | __nfs4_file_get_access(fp, O_WRONLY); |
291 | } else | 296 | } else |
292 | atomic_inc(&fp->fi_access[oflag]); | 297 | __nfs4_file_get_access(fp, oflag); |
293 | } | 298 | } |
294 | 299 | ||
295 | static void nfs4_file_put_fd(struct nfs4_file *fp, int oflag) | 300 | static void nfs4_file_put_fd(struct nfs4_file *fp, int oflag) |