aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/pseudofs
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2005-04-13 10:59:09 +0000
committerJeff Roberson <jeff@FreeBSD.org>2005-04-13 10:59:09 +0000
commit4585e3ac5acae3560e30d71102156bf7fd0afe52 (patch)
treed93f4bc84645fcd224218d7e1c19b2f6b18a4c6c /sys/fs/pseudofs
parent374df05fd3a21fb47247b5f8cc01c8e485d5d9b7 (diff)
downloadsrc-4585e3ac5acae3560e30d71102156bf7fd0afe52.tar.gz
src-4585e3ac5acae3560e30d71102156bf7fd0afe52.zip
- Change all filesystems and vfs_cache to relock the dvp once the child is
locked in the ISDOTDOT case. Se vfs_lookup.c r1.79 for details. Sponsored by: Isilon Systems, Inc.
Notes
Notes: svn path=/head/; revision=145006
Diffstat (limited to 'sys/fs/pseudofs')
-rw-r--r--sys/fs/pseudofs/pseudofs_vnops.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/sys/fs/pseudofs/pseudofs_vnops.c b/sys/fs/pseudofs/pseudofs_vnops.c
index 3617cdc0da2e..dfae1ef1fcfa 100644
--- a/sys/fs/pseudofs/pseudofs_vnops.c
+++ b/sys/fs/pseudofs/pseudofs_vnops.c
@@ -413,6 +413,8 @@ pfs_lookup(struct vop_cachedlookup_args *va)
if (error)
goto failed;
+ if (cnp->cn_flags & ISDOTDOT)
+ vn_lock(vn, LK_EXCLUSIVE|LK_RETRY, cnp->cn_thread);
if (cnp->cn_flags & MAKEENTRY)
cache_enter(vn, *vpp, cnp);
PFS_RETURN (0);