Module Name:    src
Committed By:   hannken
Date:           Sun May  7 08:24:20 UTC 2017

Modified Files:
        src/sys/kern: vfs_mount.c vfs_trans.c

Log Message:
Move fstrans initialization to vfs_mountalloc().


To generate a diff of this commit:
cvs rdiff -u -r1.59 -r1.60 src/sys/kern/vfs_mount.c
cvs rdiff -u -r1.44 -r1.45 src/sys/kern/vfs_trans.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/kern/vfs_mount.c
diff -u src/sys/kern/vfs_mount.c:1.59 src/sys/kern/vfs_mount.c:1.60
--- src/sys/kern/vfs_mount.c:1.59	Sun May  7 08:21:08 2017
+++ src/sys/kern/vfs_mount.c	Sun May  7 08:24:20 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_mount.c,v 1.59 2017/05/07 08:21:08 hannken Exp $	*/
+/*	$NetBSD: vfs_mount.c,v 1.60 2017/05/07 08:24:20 hannken Exp $	*/
 
 /*-
  * Copyright (c) 1997-2011 The NetBSD Foundation, Inc.
@@ -67,7 +67,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.59 2017/05/07 08:21:08 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_mount.c,v 1.60 2017/05/07 08:24:20 hannken Exp $");
 
 #include <sys/param.h>
 #include <sys/kernel.h>
@@ -148,6 +148,8 @@ struct mount *
 vfs_mountalloc(struct vfsops *vfsops, vnode_t *vp)
 {
 	struct mount *mp;
+	int error __diagused;
+	extern struct vfsops dead_vfsops;
 
 	mp = kmem_zalloc(sizeof(*mp), KM_SLEEP);
 	if (mp == NULL)
@@ -161,6 +163,10 @@ vfs_mountalloc(struct vfsops *vfsops, vn
 	mutex_init(&mp->mnt_updating, MUTEX_DEFAULT, IPL_NONE);
 	mp->mnt_vnodecovered = vp;
 	mount_initspecific(mp);
+	if (vfsops != &dead_vfsops) {
+		error = fstrans_mount(mp);
+		KASSERT(error == 0);
+	}
 
 	mutex_enter(&mountgen_lock);
 	mp->mnt_gen = mountgen++;
@@ -735,11 +741,6 @@ mount_domount(struct lwp *l, vnode_t **v
 		return ENOMEM;
 	}
 
-	if ((error = fstrans_mount(mp)) != 0) {
-		vfs_rele(mp);
-		return error;
-	}
-
 	mp->mnt_stat.f_owner = kauth_cred_geteuid(l->l_cred);
 
 	/*
@@ -1271,8 +1272,6 @@ done:
 
 		mp->mnt_flag |= MNT_ROOTFS;
 		mp->mnt_op->vfs_refcount++;
-		error = fstrans_mount(mp);
-		KASSERT(error == 0);
 
 		/*
 		 * Get the vnode for '/'.  Set cwdi0.cwdi_cdir to

Index: src/sys/kern/vfs_trans.c
diff -u src/sys/kern/vfs_trans.c:1.44 src/sys/kern/vfs_trans.c:1.45
--- src/sys/kern/vfs_trans.c:1.44	Sun May  7 08:23:28 2017
+++ src/sys/kern/vfs_trans.c	Sun May  7 08:24:20 2017
@@ -1,4 +1,4 @@
-/*	$NetBSD: vfs_trans.c,v 1.44 2017/05/07 08:23:28 hannken Exp $	*/
+/*	$NetBSD: vfs_trans.c,v 1.45 2017/05/07 08:24:20 hannken Exp $	*/
 
 /*-
  * Copyright (c) 2007 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: vfs_trans.c,v 1.44 2017/05/07 08:23:28 hannken Exp $");
+__KERNEL_RCSID(0, "$NetBSD: vfs_trans.c,v 1.45 2017/05/07 08:24:20 hannken Exp $");
 
 /*
  * File system transaction operations.
@@ -188,12 +188,8 @@ fstrans_mount_dtor(struct mount *mp)
 int
 fstrans_mount(struct mount *mp)
 {
-	int error;
 	struct fstrans_mount_info *newfmi;
 
-	error = vfs_busy(mp);
-	if (error)
-		return error;
 	newfmi = kmem_alloc(sizeof(*newfmi), KM_SLEEP);
 	newfmi->fmi_state = FSTRANS_NORMAL;
 	newfmi->fmi_ref_cnt = 1;
@@ -206,7 +202,6 @@ fstrans_mount(struct mount *mp)
 	mutex_exit(&fstrans_mount_lock);
 
 	vfs_ref(mp);
-	vfs_unbusy(mp);
 
 	return 0;
 }

Reply via email to