CVS commit: src/sys/ufs/mfs

2022-03-19 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Sat Mar 19 13:48:42 UTC 2022

Modified Files:
src/sys/ufs/mfs: mfs_vfsops.c mfs_vnops.c

Log Message:
Switch MFS device node to real vnode locking, VV_LOCKSWORK now.


To generate a diff of this commit:
cvs rdiff -u -r1.114 -r1.115 src/sys/ufs/mfs/mfs_vfsops.c
cvs rdiff -u -r1.63 -r1.64 src/sys/ufs/mfs/mfs_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/ufs/mfs/mfs_vfsops.c
diff -u src/sys/ufs/mfs/mfs_vfsops.c:1.114 src/sys/ufs/mfs/mfs_vfsops.c:1.115
--- src/sys/ufs/mfs/mfs_vfsops.c:1.114	Mon Mar 16 21:20:13 2020
+++ src/sys/ufs/mfs/mfs_vfsops.c	Sat Mar 19 13:48:42 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_vfsops.c,v 1.114 2020/03/16 21:20:13 pgoyette Exp $	*/
+/*	$NetBSD: mfs_vfsops.c,v 1.115 2022/03/19 13:48:42 hannken Exp $	*/
 
 /*
  * Copyright (c) 1989, 1990, 1993, 1994
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: mfs_vfsops.c,v 1.114 2020/03/16 21:20:13 pgoyette Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfs_vfsops.c,v 1.115 2022/03/19 13:48:42 hannken Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_compat_netbsd.h"
@@ -208,6 +208,7 @@ mfs_mountroot(void)
 	rootvp->v_data = mfsp;
 	rootvp->v_op = mfs_vnodeop_p;
 	rootvp->v_tag = VT_MFS;
+	rootvp->v_vflag |= VV_LOCKSWORK;
 	mfsp->mfs_baseoff = mfs_rootbase;
 	mfsp->mfs_size = mfs_rootsize;
 	mfsp->mfs_vnode = rootvp;
@@ -326,6 +327,7 @@ mfs_mount(struct mount *mp, const char *
 	KASSERT(devvp->v_data == NULL);
 	devvp->v_op = mfs_vnodeop_p;
 	devvp->v_data = mfsp;
+	devvp->v_vflag |= VV_LOCKSWORK;
 	mfsp->mfs_baseoff = args->base;
 	mfsp->mfs_size = args->size;
 	mfsp->mfs_vnode = devvp;

Index: src/sys/ufs/mfs/mfs_vnops.c
diff -u src/sys/ufs/mfs/mfs_vnops.c:1.63 src/sys/ufs/mfs/mfs_vnops.c:1.64
--- src/sys/ufs/mfs/mfs_vnops.c:1.63	Sun Jul 18 23:57:15 2021
+++ src/sys/ufs/mfs/mfs_vnops.c	Sat Mar 19 13:48:42 2022
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_vnops.c,v 1.63 2021/07/18 23:57:15 dholland Exp $	*/
+/*	$NetBSD: mfs_vnops.c,v 1.64 2022/03/19 13:48:42 hannken Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: mfs_vnops.c,v 1.63 2021/07/18 23:57:15 dholland Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfs_vnops.c,v 1.64 2022/03/19 13:48:42 hannken Exp $");
 
 #include 
 #include 
@@ -89,12 +89,12 @@ const struct vnodeopv_entry_desc mfs_vno
 	{ _abortop_desc, genfs_badop },		/* abortop */
 	{ _inactive_desc, mfs_inactive },		/* inactive */
 	{ _reclaim_desc, mfs_reclaim },		/* reclaim */
-	{ _lock_desc, genfs_nolock },		/* lock */
-	{ _unlock_desc, genfs_nounlock },		/* unlock */
+	{ _lock_desc, genfs_lock },			/* lock */
+	{ _unlock_desc, genfs_unlock },		/* unlock */
 	{ _bmap_desc, mfs_bmap },			/* bmap */
 	{ _strategy_desc, mfs_strategy },		/* strategy */
 	{ _print_desc, mfs_print },			/* print */
-	{ _islocked_desc, genfs_noislocked },	/* islocked */
+	{ _islocked_desc, genfs_islocked },		/* islocked */
 	{ _pathconf_desc, genfs_badop },		/* pathconf */
 	{ _advlock_desc, genfs_badop },		/* advlock */
 	{ _bwrite_desc, vn_bwrite },		/* bwrite */



CVS commit: src/sys/ufs/mfs

2022-03-19 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Sat Mar 19 13:48:42 UTC 2022

Modified Files:
src/sys/ufs/mfs: mfs_vfsops.c mfs_vnops.c

Log Message:
Switch MFS device node to real vnode locking, VV_LOCKSWORK now.


To generate a diff of this commit:
cvs rdiff -u -r1.114 -r1.115 src/sys/ufs/mfs/mfs_vfsops.c
cvs rdiff -u -r1.63 -r1.64 src/sys/ufs/mfs/mfs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/ufs/mfs

2019-02-20 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Wed Feb 20 10:03:56 UTC 2019

Modified Files:
src/sys/ufs/mfs: mfs_vnops.c

Log Message:
Remove superfluous VOP_UNLOCK(), vnode will be unlocked from spec_reclaim().


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 src/sys/ufs/mfs/mfs_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/ufs/mfs/mfs_vnops.c
diff -u src/sys/ufs/mfs/mfs_vnops.c:1.58 src/sys/ufs/mfs/mfs_vnops.c:1.59
--- src/sys/ufs/mfs/mfs_vnops.c:1.58	Fri May 26 14:21:02 2017
+++ src/sys/ufs/mfs/mfs_vnops.c	Wed Feb 20 10:03:55 2019
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_vnops.c,v 1.58 2017/05/26 14:21:02 riastradh Exp $	*/
+/*	$NetBSD: mfs_vnops.c,v 1.59 2019/02/20 10:03:55 hannken Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -32,7 +32,7 @@
  */
 
 #include 
-__KERNEL_RCSID(0, "$NetBSD: mfs_vnops.c,v 1.58 2017/05/26 14:21:02 riastradh Exp $");
+__KERNEL_RCSID(0, "$NetBSD: mfs_vnops.c,v 1.59 2019/02/20 10:03:55 hannken Exp $");
 
 #include 
 #include 
@@ -297,8 +297,6 @@ mfs_reclaim(void *v)
 	struct mfsnode *mfsp = VTOMFS(vp);
 	int refcnt;
 
-	VOP_UNLOCK(vp);
-
 	mutex_enter(_lock);
 	vp->v_data = NULL;
 	refcnt = --mfsp->mfs_refcnt;



CVS commit: src/sys/ufs/mfs

2019-02-20 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Wed Feb 20 10:03:56 UTC 2019

Modified Files:
src/sys/ufs/mfs: mfs_vnops.c

Log Message:
Remove superfluous VOP_UNLOCK(), vnode will be unlocked from spec_reclaim().


To generate a diff of this commit:
cvs rdiff -u -r1.58 -r1.59 src/sys/ufs/mfs/mfs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/ufs/mfs

2015-01-14 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Wed Jan 14 11:21:31 UTC 2015

Modified Files:
src/sys/ufs/mfs: mfs_vfsops.c mfs_vnops.c

Log Message:
Change mfs to use an anonymous vnode obtained with bdevvp()
for the specdev it mounts on.


To generate a diff of this commit:
cvs rdiff -u -r1.108 -r1.109 src/sys/ufs/mfs/mfs_vfsops.c
cvs rdiff -u -r1.55 -r1.56 src/sys/ufs/mfs/mfs_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/ufs/mfs/mfs_vfsops.c
diff -u src/sys/ufs/mfs/mfs_vfsops.c:1.108 src/sys/ufs/mfs/mfs_vfsops.c:1.109
--- src/sys/ufs/mfs/mfs_vfsops.c:1.108	Thu May  8 08:21:53 2014
+++ src/sys/ufs/mfs/mfs_vfsops.c	Wed Jan 14 11:21:31 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_vfsops.c,v 1.108 2014/05/08 08:21:53 hannken Exp $	*/
+/*	$NetBSD: mfs_vfsops.c,v 1.109 2015/01/14 11:21:31 hannken Exp $	*/
 
 /*
  * Copyright (c) 1989, 1990, 1993, 1994
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: mfs_vfsops.c,v 1.108 2014/05/08 08:21:53 hannken Exp $);
+__KERNEL_RCSID(0, $NetBSD: mfs_vfsops.c,v 1.109 2015/01/14 11:21:31 hannken Exp $);
 
 #if defined(_KERNEL_OPT)
 #include opt_compat_netbsd.h
@@ -71,7 +71,7 @@ MODULE(MODULE_CLASS_VFS, mfs, ffs);
 kmutex_t mfs_lock;	/* global lock */
 
 /* used for building internal dev_t, minor == 0 reserved for miniroot */
-static int mfs_minor = 1;
+static devminor_t mfs_minor = 1;
 static int mfs_initcnt;
 
 extern int (**mfs_vnodeop_p)(void *);
@@ -246,6 +246,7 @@ mfs_mount(struct mount *mp, const char *
 	struct fs *fs;
 	struct mfsnode *mfsp;
 	struct proc *p;
+	devminor_t minor;
 	int flags, error = 0;
 
 	if (args == NULL)
@@ -307,14 +308,20 @@ mfs_mount(struct mount *mp, const char *
 			return EINVAL;
 		return (0);
 	}
-	error = getnewvnode(VT_MFS, NULL, mfs_vnodeop_p, NULL, devvp);
+	mutex_enter(mfs_lock);
+	minor = mfs_minor++;
+	mutex_exit(mfs_lock);
+	error = bdevvp(makedev(255, minor), devvp);
 	if (error)
 		return (error);
-	devvp-v_vflag |= VV_MPSAFE;
-	devvp-v_type = VBLK;
-	spec_node_init(devvp, makedev(255, mfs_minor));
-	mfs_minor++;
 	mfsp = kmem_alloc(sizeof(*mfsp), KM_SLEEP);
+	/*
+	 * Changing v_op and v_data here is safe as we are
+	 * the exclusive owner of this device node.
+	 */
+	KASSERT(devvp-v_op == spec_vnodeop_p);
+	KASSERT(devvp-v_data == NULL);
+	devvp-v_op = mfs_vnodeop_p;
 	devvp-v_data = mfsp;
 	mfsp-mfs_baseoff = args-base;
 	mfsp-mfs_size = args-size;

Index: src/sys/ufs/mfs/mfs_vnops.c
diff -u src/sys/ufs/mfs/mfs_vnops.c:1.55 src/sys/ufs/mfs/mfs_vnops.c:1.56
--- src/sys/ufs/mfs/mfs_vnops.c:1.55	Fri Jul 25 08:20:53 2014
+++ src/sys/ufs/mfs/mfs_vnops.c	Wed Jan 14 11:21:31 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_vnops.c,v 1.55 2014/07/25 08:20:53 dholland Exp $	*/
+/*	$NetBSD: mfs_vnops.c,v 1.56 2015/01/14 11:21:31 hannken Exp $	*/
 
 /*
  * Copyright (c) 1989, 1993
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: mfs_vnops.c,v 1.55 2014/07/25 08:20:53 dholland Exp $);
+__KERNEL_RCSID(0, $NetBSD: mfs_vnops.c,v 1.56 2015/01/14 11:21:31 hannken Exp $);
 
 #include sys/param.h
 #include sys/systm.h
@@ -280,8 +280,8 @@ mfs_inactive(void *v)
 	if (bufq_peek(mfsp-mfs_buflist) != NULL)
 		panic(mfs_inactive: not inactive (mfs_buflist %p),
 			bufq_peek(mfsp-mfs_buflist));
-	VOP_UNLOCK(vp);
-	return (0);
+
+	return VOCALL(spec_vnodeop_p,  VOFFSET(vop_inactive), ap);
 }
 
 /*
@@ -308,7 +308,7 @@ mfs_reclaim(void *v)
 		kmem_free(mfsp, sizeof(*mfsp));
 	}
 
-	return (0);
+	return VOCALL(spec_vnodeop_p,  VOFFSET(vop_reclaim), ap);
 }
 
 /*



CVS commit: src/sys/ufs/mfs

2015-01-14 Thread Juergen Hannken-Illjes
Module Name:src
Committed By:   hannken
Date:   Wed Jan 14 11:21:31 UTC 2015

Modified Files:
src/sys/ufs/mfs: mfs_vfsops.c mfs_vnops.c

Log Message:
Change mfs to use an anonymous vnode obtained with bdevvp()
for the specdev it mounts on.


To generate a diff of this commit:
cvs rdiff -u -r1.108 -r1.109 src/sys/ufs/mfs/mfs_vfsops.c
cvs rdiff -u -r1.55 -r1.56 src/sys/ufs/mfs/mfs_vnops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.



CVS commit: src/sys/ufs/mfs

2010-03-02 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Tue Mar  2 17:20:03 UTC 2010

Modified Files:
src/sys/ufs/mfs: mfs_extern.h mfs_vfsops.c
Added Files:
src/sys/ufs/mfs: mfs_miniroot.c

Log Message:
Make mfs_initminiroot() mandatory.  Allows to remove #ifdef MFS.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/ufs/mfs/mfs_extern.h
cvs rdiff -u -r0 -r1.1 src/sys/ufs/mfs/mfs_miniroot.c
cvs rdiff -u -r1.101 -r1.102 src/sys/ufs/mfs/mfs_vfsops.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/ufs/mfs/mfs_extern.h
diff -u src/sys/ufs/mfs/mfs_extern.h:1.30 src/sys/ufs/mfs/mfs_extern.h:1.31
--- src/sys/ufs/mfs/mfs_extern.h:1.30	Sat Jun 28 01:34:05 2008
+++ src/sys/ufs/mfs/mfs_extern.h	Tue Mar  2 17:20:02 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_extern.h,v 1.30 2008/06/28 01:34:05 rumble Exp $	*/
+/*	$NetBSD: mfs_extern.h,v 1.31 2010/03/02 17:20:02 pooka Exp $	*/
 
 /*-
  * Copyright (c) 1991, 1993
@@ -69,6 +69,8 @@
 #include sys/mutex.h
 
 extern kmutex_t	mfs_lock;
+extern void *mfs_rootbase;
+extern u_long mfs_rootsize;
 
 #endif
 

Index: src/sys/ufs/mfs/mfs_vfsops.c
diff -u src/sys/ufs/mfs/mfs_vfsops.c:1.101 src/sys/ufs/mfs/mfs_vfsops.c:1.102
--- src/sys/ufs/mfs/mfs_vfsops.c:1.101	Tue Jan 13 13:35:54 2009
+++ src/sys/ufs/mfs/mfs_vfsops.c	Tue Mar  2 17:20:02 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: mfs_vfsops.c,v 1.101 2009/01/13 13:35:54 yamt Exp $	*/
+/*	$NetBSD: mfs_vfsops.c,v 1.102 2010/03/02 17:20:02 pooka Exp $	*/
 
 /*
  * Copyright (c) 1989, 1990, 1993, 1994
@@ -32,7 +32,7 @@
  */
 
 #include sys/cdefs.h
-__KERNEL_RCSID(0, $NetBSD: mfs_vfsops.c,v 1.101 2009/01/13 13:35:54 yamt Exp $);
+__KERNEL_RCSID(0, $NetBSD: mfs_vfsops.c,v 1.102 2010/03/02 17:20:02 pooka Exp $);
 
 #if defined(_KERNEL_OPT)
 #include opt_compat_netbsd.h
@@ -68,11 +68,10 @@
 
 MODULE(MODULE_CLASS_VFS, mfs, ffs);
 
-void *	mfs_rootbase;	/* address of mini-root in kernel virtual memory */
-u_long	mfs_rootsize;	/* size of mini-root in bytes */
 kmutex_t mfs_lock;	/* global lock */
 
-static int mfs_minor;	/* used for building internal dev_t */
+/* used for building internal dev_t, minor == 0 reserved for miniroot */
+static int mfs_minor = 1;
 static int mfs_initcnt;
 
 extern int (**mfs_vnodeop_p)(void *);
@@ -241,27 +240,6 @@
 }
 
 /*
- * This is called early in boot to set the base address and size
- * of the mini-root.
- */
-int
-mfs_initminiroot(void *base)
-{
-	struct fs *fs = (struct fs *)((char *)base + SBLOCK_UFS1);
-
-	/* check for valid super block */
-	if (fs-fs_magic != FS_UFS1_MAGIC || fs-fs_bsize  MAXBSIZE ||
-	fs-fs_bsize  sizeof(struct fs))
-		return (0);
-	rootfstype = MOUNT_MFS;
-	mfs_rootbase = base;
-	mfs_rootsize = fs-fs_fsize * fs-fs_size;
-	rootdev = makedev(255, mfs_minor);
-	mfs_minor++;
-	return (mfs_rootsize);
-}
-
-/*
  * VFS Operations.
  *
  * mount system call

Added files:

Index: src/sys/ufs/mfs/mfs_miniroot.c
diff -u /dev/null src/sys/ufs/mfs/mfs_miniroot.c:1.1
--- /dev/null	Tue Mar  2 17:20:03 2010
+++ src/sys/ufs/mfs/mfs_miniroot.c	Tue Mar  2 17:20:02 2010
@@ -0,0 +1,68 @@
+/*	$NetBSD: mfs_miniroot.c,v 1.1 2010/03/02 17:20:02 pooka Exp $	*/
+
+/*
+ * Copyright (c) 1989, 1990, 1993, 1994
+ *	The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *notice, this list of conditions and the following disclaimer in the
+ *documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *may be used to endorse or promote products derived from this software
+ *without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ *	@(#)mfs_vfsops.c	8.11 (Berkeley) 6/19/95
+ */
+
+#include sys/cdefs.h
+__KERNEL_RCSID(0, $NetBSD: mfs_miniroot.c,v 1.1 

CVS commit: src/sys/ufs/mfs

2010-03-02 Thread Antti Kantee
Module Name:src
Committed By:   pooka
Date:   Tue Mar  2 17:20:03 UTC 2010

Modified Files:
src/sys/ufs/mfs: mfs_extern.h mfs_vfsops.c
Added Files:
src/sys/ufs/mfs: mfs_miniroot.c

Log Message:
Make mfs_initminiroot() mandatory.  Allows to remove #ifdef MFS.


To generate a diff of this commit:
cvs rdiff -u -r1.30 -r1.31 src/sys/ufs/mfs/mfs_extern.h
cvs rdiff -u -r0 -r1.1 src/sys/ufs/mfs/mfs_miniroot.c
cvs rdiff -u -r1.101 -r1.102 src/sys/ufs/mfs/mfs_vfsops.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.