diff options
author | J. Bruce Fields <bfields@redhat.com> | 2011-09-19 15:07:41 -0400 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@suse.de> | 2011-11-11 09:35:58 -0800 |
commit | 279b483174560147e9f56f79e9b1fd3bd4fc8f40 (patch) | |
tree | e6493e4e2a8fd9a7d7fdef939bdf83e683c44d24 /fs/locks.c | |
parent | 0a52cb1083a662d4c417638ccdaa81df0e67494b (diff) | |
download | kernel_samsung_smdk4412-279b483174560147e9f56f79e9b1fd3bd4fc8f40.zip kernel_samsung_smdk4412-279b483174560147e9f56f79e9b1fd3bd4fc8f40.tar.gz kernel_samsung_smdk4412-279b483174560147e9f56f79e9b1fd3bd4fc8f40.tar.bz2 |
nfsd4: fix open downgrade, again
commit 3d02fa29dec920c597dd7b7db608a4bc71f088ce upstream.
Yet another open-management regression:
- nfs4_file_downgrade() doesn't remove the BOTH access bit on
downgrade, so the server's idea of the stateid's access gets
out of sync with the client's. If we want to keep an O_RDWR
open in this case, we should do that in the file_put_access
logic rather than here.
- We forgot to convert v4 access to an open mode here.
This logic has proven too hard to get right. In the future we may
consider:
- reexamining the lock/openowner relationship (locks probably
don't really need to take their own references here).
- adding open upgrade/downgrade support to the vfs.
- removing the atomic operations. They're redundant as long as
this is all under some other lock.
Also, maybe some kind of additional static checking would help catch
O_/NFS4_SHARE_ACCESS confusion.
Signed-off-by: J. Bruce Fields <bfields@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'fs/locks.c')
0 files changed, 0 insertions, 0 deletions