diff options
author | 2007-11-28 19:31:31 +0000 | |
---|---|---|
committer | 2007-11-28 19:31:31 +0000 | |
commit | d5927027f176654330fe02e14c51fee1d2dbb511 (patch) | |
tree | 4e8499356ce3e05a0c1731a4920479ca6da3baf2 /sys | |
parent | fill the va_blocksize with something a litte saner, (diff) | |
download | wireguard-openbsd-d5927027f176654330fe02e14c51fee1d2dbb511.tar.xz wireguard-openbsd-d5927027f176654330fe02e14c51fee1d2dbb511.zip |
g/c mfs_mountroot() and mfs_initminiroot(). We don't support root on
mfs. OK deraadt@
Diffstat (limited to 'sys')
-rw-r--r-- | sys/kern/vfs_conf.c | 4 | ||||
-rw-r--r-- | sys/ufs/mfs/mfs_extern.h | 4 | ||||
-rw-r--r-- | sys/ufs/mfs/mfs_vfsops.c | 76 | ||||
-rw-r--r-- | sys/ufs/mfs/mfs_vnops.c | 17 |
4 files changed, 6 insertions, 95 deletions
diff --git a/sys/kern/vfs_conf.c b/sys/kern/vfs_conf.c index 2c011d3ee9a..3419dfb4713 100644 --- a/sys/kern/vfs_conf.c +++ b/sys/kern/vfs_conf.c @@ -1,4 +1,4 @@ -/* $OpenBSD: vfs_conf.c,v 1.33 2007/06/01 05:37:14 deraadt Exp $ */ +/* $OpenBSD: vfs_conf.c,v 1.34 2007/11/28 19:31:31 millert Exp $ */ /* $NetBSD: vfs_conf.c,v 1.21.4.1 1995/11/01 00:06:26 jtc Exp $ */ /* @@ -131,7 +131,7 @@ static struct vfsconf vfsconflist[] = { /* Memory-based Filesystem */ #ifdef MFS - { &mfs_vfsops, MOUNT_MFS, 3, 0, MNT_LOCAL, mfs_mountroot, NULL }, + { &mfs_vfsops, MOUNT_MFS, 3, 0, MNT_LOCAL, NULL, NULL }, #endif #ifdef EXT2FS diff --git a/sys/ufs/mfs/mfs_extern.h b/sys/ufs/mfs/mfs_extern.h index fce0bbda04e..acd5b0aae35 100644 --- a/sys/ufs/mfs/mfs_extern.h +++ b/sys/ufs/mfs/mfs_extern.h @@ -1,4 +1,4 @@ -/* $OpenBSD: mfs_extern.h,v 1.12 2006/03/28 13:18:17 pedro Exp $ */ +/* $OpenBSD: mfs_extern.h,v 1.13 2007/11/28 19:31:31 millert Exp $ */ /* $NetBSD: mfs_extern.h,v 1.4 1996/02/09 22:31:27 christos Exp $ */ /*- @@ -44,8 +44,6 @@ struct mbuf; __BEGIN_DECLS /* mfs_vfsops.c */ -int mfs_mountroot(void); -int mfs_initminiroot(caddr_t); int mfs_mount(struct mount *, const char *, void *, struct nameidata *, struct proc *); int mfs_start(struct mount *, int, struct proc *); diff --git a/sys/ufs/mfs/mfs_vfsops.c b/sys/ufs/mfs/mfs_vfsops.c index adaf82c5f60..400bfa4a0c5 100644 --- a/sys/ufs/mfs/mfs_vfsops.c +++ b/sys/ufs/mfs/mfs_vfsops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mfs_vfsops.c,v 1.35 2007/11/24 12:57:18 mpf Exp $ */ +/* $OpenBSD: mfs_vfsops.c,v 1.36 2007/11/28 19:31:31 millert Exp $ */ /* $NetBSD: mfs_vfsops.c,v 1.10 1996/02/09 22:31:28 christos Exp $ */ /* @@ -55,9 +55,6 @@ #include <ufs/mfs/mfsnode.h> #include <ufs/mfs/mfs_extern.h> -caddr_t mfs_rootbase; /* address of mini-root in kernel virtual memory */ -u_long mfs_rootsize; /* size of mini-root in bytes */ - static int mfs_minor; /* used for building internal dev_t */ extern int (**mfs_vnodeop_p)(void *); @@ -82,77 +79,6 @@ const struct vfsops mfs_vfsops = { }; /* - * Called by main() when mfs is going to be mounted as root. - */ - -int -mfs_mountroot(void) -{ - struct fs *fs; - struct mount *mp; - struct proc *p = curproc; - struct ufsmount *ump; - struct mfsnode *mfsp; - int error; - - if ((error = bdevvp(swapdev, &swapdev_vp)) || - (error = bdevvp(rootdev, &rootvp))) { - printf("mfs_mountroot: can't setup bdevvp's"); - return (error); - } - if ((error = vfs_rootmountalloc("mfs", "mfs_root", &mp)) != 0) - return (error); - mfsp = malloc(sizeof *mfsp, M_MFSNODE, M_WAITOK); - rootvp->v_data = mfsp; - rootvp->v_op = mfs_vnodeop_p; - rootvp->v_tag = VT_MFS; - mfsp->mfs_baseoff = mfs_rootbase; - mfsp->mfs_size = mfs_rootsize; - mfsp->mfs_vnode = rootvp; - mfsp->mfs_pid = p->p_pid; - mfsp->mfs_buflist = (struct buf *)0; - if ((error = ffs_mountfs(rootvp, mp, p)) != 0) { - mp->mnt_vfc->vfc_refcount--; - vfs_unbusy(mp); - free(mp, M_MOUNT); - free(mfsp, M_MFSNODE); - return (error); - } - - CIRCLEQ_INSERT_TAIL(&mountlist, mp, mnt_list); - ump = VFSTOUFS(mp); - fs = ump->um_fs; - (void) copystr(mp->mnt_stat.f_mntonname, fs->fs_fsmnt, MNAMELEN - 1, 0); - (void)ffs_statfs(mp, &mp->mnt_stat, p); - vfs_unbusy(mp); - inittodr((time_t)0); - - return (0); -} - -/* - * This is called early in boot to set the base address and size - * of the mini-root. - */ -int -mfs_initminiroot(caddr_t base) -{ - struct fs *fs = (struct fs *)(base + SBOFF); - extern int (*mountroot)(void); - - /* check for valid super block */ - if (fs->fs_magic != FS_MAGIC || fs->fs_bsize > MAXBSIZE || - fs->fs_bsize < sizeof(struct fs)) - return (0); - mountroot = mfs_mountroot; - 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 diff --git a/sys/ufs/mfs/mfs_vnops.c b/sys/ufs/mfs/mfs_vnops.c index 63b7a2fd1aa..d9bb8465cd7 100644 --- a/sys/ufs/mfs/mfs_vnops.c +++ b/sys/ufs/mfs/mfs_vnops.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mfs_vnops.c,v 1.28 2007/06/01 23:47:57 deraadt Exp $ */ +/* $OpenBSD: mfs_vnops.c,v 1.29 2007/11/28 19:31:31 millert Exp $ */ /* $NetBSD: mfs_vnops.c,v 1.8 1996/03/17 02:16:32 christos Exp $ */ /* @@ -140,25 +140,12 @@ mfs_strategy(void *v) struct mfsnode *mfsp; struct vnode *vp; struct proc *p = curproc; - int s; if (!vfinddev(bp->b_dev, VBLK, &vp) || vp->v_usecount == 0) panic("mfs_strategy: bad dev"); mfsp = VTOMFS(vp); - /* check for mini-root access */ - if (mfsp->mfs_pid == 0) { - caddr_t base; - - base = mfsp->mfs_baseoff + (bp->b_blkno << DEV_BSHIFT); - if (bp->b_flags & B_READ) - bcopy(base, bp->b_data, bp->b_bcount); - else - bcopy(bp->b_data, base, bp->b_bcount); - s = splbio(); - biodone(bp); - splx(s); - } else if (p != NULL && mfsp->mfs_pid == p->p_pid) { + if (p != NULL && mfsp->mfs_pid == p->p_pid) { mfs_doio(bp, mfsp->mfs_baseoff); } else { bp->b_actf = mfsp->mfs_buflist; |