]> git.michaelhowe.org Git - packages/o/openafs.git/commit
FBSD: cleanup dvp locking for ISDOTDOT
authorBen Kaduk <kaduk@mit.edu>
Sun, 13 Nov 2011 18:12:50 +0000 (13:12 -0500)
committerJeffrey Altman <jaltman@secure-endpoints.com>
Fri, 9 Dec 2011 04:37:47 +0000 (20:37 -0800)
commit2ad4d31d40683e6e603b117043e154f0db97c3c8
treec0f26e96cd988821db76ef79a4febd2dff5a05d1
parentc515e30b2b9b74feb15c58c298c41c435493626a
FBSD: cleanup dvp locking for ISDOTDOT

This is a more correct version of
c2ed2577f9c16df3088158fb593d7aab6e8690d0, which was reverted since
it caused build issues on some versions and kernel panics on others.

We do want to always unlock dvp before calling over the network
in the ISDOTDOT case, but be sure to use the proper spelling
for this operation (as the syntax has changed between FreeBSD versions).
This requires not unlocking dvp right after the afs_lookup() call if
it succeeds, letting us just lock the "child" vp (which is actually
the parent starting from '/') first, and then re-lock dvp.

The error case of afs_lookup() was already handled correctly in
this logic, which is to say that it was incorrect before this change,
attempting to recursively lock dvp which causes a panic.

Reviewed-on: http://gerrit.openafs.org/6127
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Derrick Brashear <shadow@dementix.org>
(cherry picked from commit 8e14168c9c77850ce0603d56f8aa280f73cb3114)

Change-Id: I2d929875a9b008f0aa0b64bce7971932691d9956
Reviewed-on: http://gerrit.openafs.org/6234
Tested-by: BuildBot <buildbot@rampaginggeek.com>
Reviewed-by: Jeffrey Altman <jaltman@secure-endpoints.com>
src/afs/FBSD/osi_vnodeops.c