]> CyberLeo.Net >> Repos - FreeBSD/stable/8.git/commit
MFC: r223774
authorrmacklem <rmacklem@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 18 Jul 2011 21:04:35 +0000 (21:04 +0000)
committerrmacklem <rmacklem@ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f>
Mon, 18 Jul 2011 21:04:35 +0000 (21:04 +0000)
commit90c4878057bbe4fcc436746cdf23aea8f66d21fa
tree56484df0ef433a3dc0c074975863d7b0f0c32ab5
parent44af0493e234260716f4ab73694889fb7479f1f8
MFC: r223774
The algorithm used by nfscl_getopen() could have resulted in
multiple instances of the same lock_owner when a process both
inherited an open file descriptor plus opened the same file itself.
Since some NFSv4 servers cannot handle multiple instances of
the same lock_owner string, this patch changes the algorithm
used by nfscl_getopen() in the new NFSv4 client to keep that
from happening. The new algorithm is simpler, since there is
no longer any need to ascend the process's parentage tree because
all NFSv4 Closes for a file are done at VOP_INACTIVE()/VOP_RECLAIM(),
making the Opens indistinct w.r.t. use with Lock Ops.
This problem was discovered at the recent NFSv4 interoperability
Bakeathon.

git-svn-id: svn://svn.freebsd.org/base/stable/8@224203 ccf9f872-aa2e-dd11-9fc8-001c23d0bc1f
sys/fs/nfsclient/nfs_clstate.c