Module Name: src Committed By: hannken Date: Sat Mar 19 13:48:04 UTC 2022
Modified Files: src/sys/fs/union: union_subr.c union_vnops.c Log Message: As FSTRANS is part of VOP_*LOCK() since June 4, 2017 the vdead_check() from union_lock() is no longer needed. Adapt union_lock() to the recent addition of upgrade or downgrade. VV_LOCKSWORK now. To generate a diff of this commit: cvs rdiff -u -r1.79 -r1.80 src/sys/fs/union/union_subr.c cvs rdiff -u -r1.82 -r1.83 src/sys/fs/union/union_vnops.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/fs/union/union_subr.c diff -u src/sys/fs/union/union_subr.c:1.79 src/sys/fs/union/union_subr.c:1.80 --- src/sys/fs/union/union_subr.c:1.79 Tue Aug 18 09:44:07 2020 +++ src/sys/fs/union/union_subr.c Sat Mar 19 13:48:04 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: union_subr.c,v 1.79 2020/08/18 09:44:07 hannken Exp $ */ +/* $NetBSD: union_subr.c,v 1.80 2022/03/19 13:48:04 hannken Exp $ */ /* * Copyright (c) 1994 @@ -72,7 +72,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: union_subr.c,v 1.79 2020/08/18 09:44:07 hannken Exp $"); +__KERNEL_RCSID(0, "$NetBSD: union_subr.c,v 1.80 2022/03/19 13:48:04 hannken Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -567,6 +567,7 @@ union_loadvnode(struct mount *mp, struct vp->v_tag = VT_UNION; vp->v_op = union_vnodeop_p; + vp->v_vflag |= VV_LOCKSWORK; vp->v_data = un; un->un_vnode = vp; Index: src/sys/fs/union/union_vnops.c diff -u src/sys/fs/union/union_vnops.c:1.82 src/sys/fs/union/union_vnops.c:1.83 --- src/sys/fs/union/union_vnops.c:1.82 Fri Dec 10 19:30:05 2021 +++ src/sys/fs/union/union_vnops.c Sat Mar 19 13:48:04 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: union_vnops.c,v 1.82 2021/12/10 19:30:05 andvar Exp $ */ +/* $NetBSD: union_vnops.c,v 1.83 2022/03/19 13:48:04 hannken Exp $ */ /* * Copyright (c) 1992, 1993, 1994, 1995 @@ -72,7 +72,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: union_vnops.c,v 1.82 2021/12/10 19:30:05 andvar Exp $"); +__KERNEL_RCSID(0, "$NetBSD: union_vnops.c,v 1.83 2022/03/19 13:48:04 hannken Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -1709,15 +1709,6 @@ union_lock(void *v) lockvp = LOCKVP(vp); error = union_lock1(vp, lockvp, flags); mutex_exit(&un->un_lock); - if (error) - return error; - if (mutex_tryenter(vp->v_interlock)) { - error = vdead_check(vp, VDEAD_NOWAIT); - mutex_exit(vp->v_interlock); - } else - error = EBUSY; - if (error) - union_unlock1(vp, lockvp); return error; } @@ -1726,7 +1717,7 @@ union_lock(void *v) lockvp = LOCKVP(vp); mutex_exit(&un->un_lock); error = union_lock1(vp, lockvp, flags); - if (error != 0) + if (error != 0 || (flags & (LK_DOWNGRADE | LK_UPGRADE)) != 0) return error; mutex_enter(&un->un_lock); if (lockvp == LOCKVP(vp)) @@ -1735,14 +1726,6 @@ union_lock(void *v) } mutex_exit(&un->un_lock); - mutex_enter(vp->v_interlock); - error = vdead_check(vp, VDEAD_NOWAIT); - if (error) { - union_unlock1(vp, lockvp); - error = vdead_check(vp, 0); - KASSERT(error == ENOENT); - } - mutex_exit(vp->v_interlock); return error; }