Subject: Re: mfs busted?
To: None <tech-kern@netbsd.org>
From: Juergen Hannken-Illjes <hannken@eis.cs.tu-bs.de>
List: tech-kern
Date: 01/26/2004 11:03:07
On Mon, Jan 26, 2004 at 06:21:11PM +0900, YAMAMOTO Takashi wrote:
> hi,
>
> > > > i've updated the kernel from 1.6ZH to 1.6ZI, and experienced a kernel
> > > > panic on mount_mfs (from /etc/fstab). i'm still using 1.6ZH
> > > > newfs/mount_mfs (i'm in process of updating). are there any important
> > > > incompatible changes made to newfs/mount_mfs? if so, it has to be
> > > > documented in doc/UPDATING.
> > >
> > > I *think* the problem is an (accidentally?) removed:
> > >
> > > bp->b_dev = vp->v_rdev;
> > >
> > > that should still exist before:
> > >
> > > return (VOP_STRATEGY(vp, bp));
> > >
> > > in ufs_strategy() in src/sys/ufs/ufs/ufs_vnops.c . If you add that
> > > "bp->b_dev = ..." line back in, it should make things work again...
> >
> > the change solved the problem, thanks.
> >
> > itojun
>
> i think mfs_strategy() should be fixed instead.
>
> YAMAMOTO Takashi
>
> Index: mfs_vnops.c
> ===================================================================
> --- mfs_vnops.c (revision 484)
> +++ mfs_vnops.c (working copy)
> @@ -138,14 +138,15 @@ mfs_strategy(v)
> void *v;
> {
> struct vop_strategy_args /* {
> + struct vnode *a_vp;
> struct buf *a_bp;
> } */ *ap = v;
> + struct vnode *vp = ap->a_vp;
> struct buf *bp = ap->a_bp;
> struct mfsnode *mfsp;
> - struct vnode *vp;
> struct proc *p = curproc; /* XXX */
>
> - if (!vfinddev(bp->b_dev, VBLK, &vp) || vp->v_usecount == 0)
> + if (vp->v_type != VBLK || vp->v_usecount == 0)
> panic("mfs_strategy: bad dev");
> mfsp = VTOMFS(vp);
> /* check for mini-root access */
This is the right one. Committed.
--
Juergen Hannken-Illjes - hannken@eis.cs.tu-bs.de - TU Braunschweig (Germany)