The following commit has been merged in the openafs-stable-1_6_x branch:
commit 54c61781e2a1e59e9bfbd5cc065d9fef0c6f83a0
Author: Andrew Deason <[email protected]>
Date: Thu Jul 17 10:33:23 2014 -0500
LINUX: Avoid premature RO volume lock error
Commit 0fc27471e7da0c5de4addcdec1bfbca5208072cc avoids processing lock
requests for RO volumes, but it did this both in afs_lockctl() and in
the Linux-specific afs_linux_lock(). The changes in afs_linux_lock()
are incorrect, since they also avoid F_GETLK requests (whereas
afs_lockctl() just avoids F_SETLK* requests).
Additionally, the section in afs_linux_lock() incorrectly reports an
error, since it returns a positive EBADF error code, when we are
supposed to return -EBADF.
The result of all of this is that an F_GETLK F_WRLCK request for an RO
volume always fails with fcntl() returning 9 (EBADF), which is an
invalid return code for fcntl() F_GETLK (instead we should return -1
with an errno of 9). But if there are no locks, we should return
success anyway.
Just remove this section, since afs_lockctl() handles this case itself
anyway.
Thanks to Todd Lewis for reporting this issue.
Reviewed-on: http://gerrit.openafs.org/11316
Reviewed-by: Marc Dionne <[email protected]>
Reviewed-by: D Brashear <[email protected]>
Reviewed-by: Chas Williams - CONTRACTOR <[email protected]>
Tested-by: BuildBot <[email protected]>
(cherry picked from commit e0d0e6ffdbb11d5445b129ef0bd5030aec59d333)
Change-Id: Ia5d03e55f7bad9f5678cdb82808b56d975865438
Reviewed-on: http://gerrit.openafs.org/11361
Reviewed-by: Chas Williams - CONTRACTOR <[email protected]>
Tested-by: BuildBot <[email protected]>
Reviewed-by: Andrew Deason <[email protected]>
Reviewed-by: Michael Meffie <[email protected]>
Reviewed-by: Stephan Wiesand <[email protected]>
src/afs/LINUX/osi_vnodeops.c | 10 ----------
1 files changed, 0 insertions(+), 10 deletions(-)
--
OpenAFS Master Repository
_______________________________________________
OpenAFS-cvs mailing list
[email protected]
https://lists.openafs.org/mailman/listinfo/openafs-cvs