Deleted Added
full compact
40d39
< * $FreeBSD: head/sys/fs/nullfs/null_vnops.c 65464 2000-09-05 07:54:39Z bp $
44c43
< * $FreeBSD: head/sys/fs/nullfs/null_vnops.c 65464 2000-09-05 07:54:39Z bp $
---
> * $FreeBSD: head/sys/fs/nullfs/null_vnops.c 65467 2000-09-05 09:02:07Z bp $
195a195
> static int null_open(struct vop_open_args *ap);
197a198
> static int null_rename(struct vop_rename_args *ap);
450a452,453
>
> ap->a_vap->va_fsid = ap->a_vp->v_mount->mnt_stat.f_fsid.val[0];
486a490,549
> * We must handle open to be able to catch MNT_NODEV and friends.
> */
> static int
> null_open(ap)
> struct vop_open_args /* {
> struct vnode *a_vp;
> int a_mode;
> struct ucred *a_cred;
> struct proc *a_p;
> } */ *ap;
> {
> struct vnode *vp = ap->a_vp;
> struct vnode *lvp = NULLVPTOLOWERVP(ap->a_vp);
>
> if ((vp->v_mount->mnt_flag & MNT_NODEV) &&
> (lvp->v_type == VBLK || lvp->v_type == VCHR))
> return ENXIO;
>
> return (null_bypass((struct vop_generic_args *)ap));
> }
>
> /*
> * We handle this to eliminate null FS to lower FS
> * file moving. Don't know why we don't allow this,
> * possibly we should.
> */
> static int
> null_rename(ap)
> struct vop_rename_args /* {
> struct vnode *a_fdvp;
> struct vnode *a_fvp;
> struct componentname *a_fcnp;
> struct vnode *a_tdvp;
> struct vnode *a_tvp;
> struct componentname *a_tcnp;
> } */ *ap;
> {
> struct vnode *tdvp = ap->a_tdvp;
> struct vnode *fvp = ap->a_fvp;
> struct vnode *fdvp = ap->a_fdvp;
> struct vnode *tvp = ap->a_tvp;
>
> /* Check for cross-device rename. */
> if ((fvp->v_mount != tdvp->v_mount) ||
> (tvp && (fvp->v_mount != tvp->v_mount))) {
> if (tdvp == tvp)
> vrele(tdvp);
> else
> vput(tdvp);
> if (tvp)
> vput(tvp);
> vrele(fdvp);
> vrele(fvp);
> return (EXDEV);
> }
>
> return (null_bypass((struct vop_generic_args *)ap));
> }
>
> /*
570a634
> lockmgr(&null_hashlock, LK_EXCLUSIVE, NULL, ap->a_p);
571a636
> lockmgr(&null_hashlock, LK_RELEASE, NULL, ap->a_p);
595a661
> { &vop_bmap_desc, (vop_t *) vop_eopnotsupp },
596a663
> { &vop_getwritemount_desc, (vop_t *) vop_stdgetwritemount},
599a667
> { &vop_open_desc, (vop_t *) null_open },
601a670
> { &vop_rename_desc, (vop_t *) null_rename },
602a672
> { &vop_strategy_desc, (vop_t *) vop_eopnotsupp },