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 2010/03/02 17:20:02 pooka Exp $"); + +#include <sys/param.h> + +#include <ufs/mfs/mfs_extern.h> +#include <ufs/ffs/fs.h> + +void * mfs_rootbase; /* address of mini-root in kernel virtual memory */ +u_long mfs_rootsize; /* size of mini-root in bytes */ + +/* + * 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); + static bool inited = false; + + if (inited) + panic("mfs_initminiroot() called more than once"); + inited = true; + + /* 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, 0); + return (mfs_rootsize); +}