summaryrefslogtreecommitdiffstats
path: root/sys/fs/unionfs/union_vfsops.c
diff options
context:
space:
mode:
authordaichi <daichi@FreeBSD.org>2012-05-01 07:46:30 +0000
committerdaichi <daichi@FreeBSD.org>2012-05-01 07:46:30 +0000
commit83abcd3986f8b19722ed1891b1aed45f7e85396e (patch)
treea8b6599b58915fdd3333fa7572c0b2dd8a81f43d /sys/fs/unionfs/union_vfsops.c
parent168204e4cfa31cedc08fc18e0a71d7c1183405a4 (diff)
downloadFreeBSD-src-83abcd3986f8b19722ed1891b1aed45f7e85396e.zip
FreeBSD-src-83abcd3986f8b19722ed1891b1aed45f7e85396e.tar.gz
- fixed a vnode lock hang-up issue.
- fixed an incorrect lock status issue. - fixed an incorrect lock issue of unionfs root vnode removed. (pointed out by keith) - fixed an infinity loop issue. (pointed out by dumbbell) - changed to do LK_RELEASE expressly when unlocked. Submitted by: ozawa@ongs.co.jp
Diffstat (limited to 'sys/fs/unionfs/union_vfsops.c')
-rw-r--r--sys/fs/unionfs/union_vfsops.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/sys/fs/unionfs/union_vfsops.c b/sys/fs/unionfs/union_vfsops.c
index 3c37d8f..936df4c 100644
--- a/sys/fs/unionfs/union_vfsops.c
+++ b/sys/fs/unionfs/union_vfsops.c
@@ -1,8 +1,8 @@
/*-
* Copyright (c) 1994, 1995 The Regents of the University of California.
* Copyright (c) 1994, 1995 Jan-Simon Pendry.
- * Copyright (c) 2005, 2006 Masanori Ozawa <ozawa@ongs.co.jp>, ONGS Inc.
- * Copyright (c) 2006 Daichi Goto <daichi@freebsd.org>
+ * Copyright (c) 2005, 2006, 2012 Masanori Ozawa <ozawa@ongs.co.jp>, ONGS Inc.
+ * Copyright (c) 2006, 2012 Daichi Goto <daichi@freebsd.org>
* All rights reserved.
*
* This code is derived from software donated to Berkeley by
@@ -165,7 +165,7 @@ unionfs_domount(struct mount *mp)
uid = va.va_uid;
gid = va.va_gid;
}
- VOP_UNLOCK(mp->mnt_vnodecovered, 0);
+ VOP_UNLOCK(mp->mnt_vnodecovered, LK_RELEASE);
if (error)
return (error);
@@ -250,7 +250,7 @@ unionfs_domount(struct mount *mp)
* Save reference
*/
if (below) {
- VOP_UNLOCK(upperrootvp, 0);
+ VOP_UNLOCK(upperrootvp, LK_RELEASE);
vn_lock(lowerrootvp, LK_EXCLUSIVE | LK_RETRY);
ump->um_lowervp = upperrootvp;
ump->um_uppervp = lowerrootvp;
@@ -281,7 +281,7 @@ unionfs_domount(struct mount *mp)
/*
* Unlock the node
*/
- VOP_UNLOCK(ump->um_uppervp, 0);
+ VOP_UNLOCK(ump->um_uppervp, LK_RELEASE);
/*
* Get the unionfs root vnode.
OpenPOWER on IntegriCloud