summaryrefslogtreecommitdiffstats
path: root/fs/locks.c
diff options
context:
space:
mode:
authorJ. Bruce Fields <bfields@redhat.com>2021-03-08 16:52:29 +0100
committerChuck Lever <chuck.lever@oracle.com>2021-03-09 16:37:34 +0100
commit6ee65a773096ab3f39d9b00311ac983be5bdeb7c (patch)
tree7421c1e9694bcb3d7f2c40ce1dd3b87015d2e2b5 /fs/locks.c
parentRevert "nfsd4: remove check_conflicting_opens warning" (diff)
downloadlinux-6ee65a773096ab3f39d9b00311ac983be5bdeb7c.tar.xz
linux-6ee65a773096ab3f39d9b00311ac983be5bdeb7c.zip
Revert "nfsd4: a client's own opens needn't prevent delegations"
This reverts commit 94415b06eb8aed13481646026dc995f04a3a534a. That commit claimed to allow a client to get a read delegation when it was the only writer. Actually it allowed a client to get a read delegation when *any* client has a write open! The main problem is that it's depending on nfs4_clnt_odstate structures that are actually only maintained for pnfs exports. This causes clients to miss writes performed by other clients, even when there have been intervening closes and opens, violating close-to-open cache consistency. We can do this a different way, but first we should just revert this. I've added pynfs 4.1 test DELEG19 to test for this, as I should have done originally! Cc: stable@vger.kernel.org Reported-by: Timo Rothenpieler <timo@rothenpieler.org> Signed-off-by: J. Bruce Fields <bfields@redhat.com> Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Diffstat (limited to 'fs/locks.c')
-rw-r--r--fs/locks.c3
1 files changed, 0 insertions, 3 deletions
diff --git a/fs/locks.c b/fs/locks.c
index 99ca97e81b7a..6125d2de39b8 100644
--- a/fs/locks.c
+++ b/fs/locks.c
@@ -1808,9 +1808,6 @@ check_conflicting_open(struct file *filp, const long arg, int flags)
if (flags & FL_LAYOUT)
return 0;
- if (flags & FL_DELEG)
- /* We leave these checks to the caller. */
- return 0;
if (arg == F_RDLCK)
return inode_is_open_for_write(inode) ? -EAGAIN : 0;