aboutsummaryrefslogtreecommitdiff
path: root/sys/fs/unionfs/union_vfsops.c
diff options
context:
space:
mode:
authorJason A. Harmening <jah@FreeBSD.org>2021-05-30 00:46:46 +0000
committerJason A. Harmening <jah@FreeBSD.org>2021-05-30 00:48:02 +0000
commit271fcf1c28efd22342212b1ccaa3dba4fc059627 (patch)
treee1fa6c2039bc9970ddf36f58aeb16002e2443345 /sys/fs/unionfs/union_vfsops.c
parent331a7601c9c21c1e55c57c5338e7affced9c7b7c (diff)
downloadsrc-271fcf1c28efd22342212b1ccaa3dba4fc059627.tar.gz
src-271fcf1c28efd22342212b1ccaa3dba4fc059627.zip
Revert commits 6d3e78ad6c11 and 54256e7954d7
Parts of libprocstat like to pretend they're kernel components for the sake of including mount.h, and including sys/types.h in the _KERNEL case doesn't fix the build for some reason. Revert both the VFS_QUOTACTL() change and the follow-up "fix" for now.
Diffstat (limited to 'sys/fs/unionfs/union_vfsops.c')
-rw-r--r--sys/fs/unionfs/union_vfsops.c28
1 files changed, 3 insertions, 25 deletions
diff --git a/sys/fs/unionfs/union_vfsops.c b/sys/fs/unionfs/union_vfsops.c
index bd264c7bcdb5..ae95bd9c005c 100644
--- a/sys/fs/unionfs/union_vfsops.c
+++ b/sys/fs/unionfs/union_vfsops.c
@@ -371,38 +371,16 @@ unionfs_root(struct mount *mp, int flags, struct vnode **vpp)
}
static int
-unionfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg,
- bool *mp_busy)
+unionfs_quotactl(struct mount *mp, int cmd, uid_t uid, void *arg)
{
- struct mount *uppermp;
struct unionfs_mount *ump;
- int error;
- bool unbusy;
ump = MOUNTTOUNIONFSMOUNT(mp);
- uppermp = atomic_load_ptr(&ump->um_uppervp->v_mount);
- KASSERT(*mp_busy == true, ("upper mount not busy"));
- /*
- * See comment in sys_quotactl() for an explanation of why the
- * lower mount needs to be busied by the caller of VFS_QUOTACTL()
- * but may be unbusied by the implementation. We must unbusy
- * the upper mount for the same reason; otherwise a namei lookup
- * issued by the VFS_QUOTACTL() implementation could traverse the
- * upper mount and deadlock.
- */
- vfs_unbusy(mp);
- *mp_busy = false;
- unbusy = true;
- error = vfs_busy(uppermp, 0);
+
/*
* Writing is always performed to upper vnode.
*/
- if (error == 0)
- error = VFS_QUOTACTL(uppermp, cmd, uid, arg, &unbusy);
- if (unbusy)
- vfs_unbusy(uppermp);
-
- return (error);
+ return (VFS_QUOTACTL(ump->um_uppervp->v_mount, cmd, uid, arg));
}
static int