Deleted Added
full compact
null_vnops.c (97072) null_vnops.c (98175)
1/*
2 * Copyright (c) 1992, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * John Heidemann of the UCLA Ficus project.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 26 unchanged lines hidden (view full) ---

35 *
36 * @(#)null_vnops.c 8.6 (Berkeley) 5/27/95
37 *
38 * Ancestors:
39 * @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92
40 * ...and...
41 * @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project
42 *
1/*
2 * Copyright (c) 1992, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * This code is derived from software contributed to Berkeley by
6 * John Heidemann of the UCLA Ficus project.
7 *
8 * Redistribution and use in source and binary forms, with or without

--- 26 unchanged lines hidden (view full) ---

35 *
36 * @(#)null_vnops.c 8.6 (Berkeley) 5/27/95
37 *
38 * Ancestors:
39 * @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92
40 * ...and...
41 * @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project
42 *
43 * $FreeBSD: head/sys/fs/nullfs/null_vnops.c 97072 2002-05-21 18:07:33Z semenu $
43 * $FreeBSD: head/sys/fs/nullfs/null_vnops.c 98175 2002-06-13 17:30:40Z semenu $
44 */
45
46/*
47 * Null Layer
48 *
49 * (See mount_nullfs(8) for more information.)
50 *
51 * The null layer duplicates a portion of the filesystem

--- 658 unchanged lines hidden (view full) ---

710static int
711null_inactive(ap)
712 struct vop_inactive_args /* {
713 struct vnode *a_vp;
714 struct thread *a_td;
715 } */ *ap;
716{
717 struct vnode *vp = ap->a_vp;
44 */
45
46/*
47 * Null Layer
48 *
49 * (See mount_nullfs(8) for more information.)
50 *
51 * The null layer duplicates a portion of the filesystem

--- 658 unchanged lines hidden (view full) ---

710static int
711null_inactive(ap)
712 struct vop_inactive_args /* {
713 struct vnode *a_vp;
714 struct thread *a_td;
715 } */ *ap;
716{
717 struct vnode *vp = ap->a_vp;
718 struct thread *td = ap->a_td;
718
719
720 VOP_UNLOCK(vp, 0, td);
721
719 /*
720 * If this is the last reference, then free up the vnode
721 * so as not to tie up the lower vnodes.
722 */
722 /*
723 * If this is the last reference, then free up the vnode
724 * so as not to tie up the lower vnodes.
725 */
723 if (vp->v_usecount == 0)
724 vrecycle(vp, NULL, ap->a_td);
726 vrecycle(vp, NULL, td);
727
725 return (0);
726}
727
728/*
729 * We can free memory in null_inactive, but we do this
730 * here. (Possible to guard vp->v_data to point somewhere)
731 */
732static int

--- 8 unchanged lines hidden (view full) ---

741 struct null_node *xp = VTONULL(vp);
742 struct vnode *lowervp = xp->null_lowervp;
743 void *vdata;
744
745 lockmgr(&null_hashlock, LK_EXCLUSIVE, NULL, td);
746 LIST_REMOVE(xp, null_hash);
747 lockmgr(&null_hashlock, LK_RELEASE, NULL, td);
748
728 return (0);
729}
730
731/*
732 * We can free memory in null_inactive, but we do this
733 * here. (Possible to guard vp->v_data to point somewhere)
734 */
735static int

--- 8 unchanged lines hidden (view full) ---

744 struct null_node *xp = VTONULL(vp);
745 struct vnode *lowervp = xp->null_lowervp;
746 void *vdata;
747
748 lockmgr(&null_hashlock, LK_EXCLUSIVE, NULL, td);
749 LIST_REMOVE(xp, null_hash);
750 lockmgr(&null_hashlock, LK_RELEASE, NULL, td);
751
749 xp->null_lowervp = NULLVP;
750 if (vp->v_vnlock != NULL) {
751 vp->v_vnlock = &vp->v_lock; /* we no longer share the lock */
752 } else
753 VOP_UNLOCK(vp, LK_THISLAYER, td);
754
755 /*
756 * Now it is safe to drop references to the lower vnode.
757 * VOP_INACTIVE() will be called by vrele() if necessary.
758 */
752 /*
753 * Now it is safe to drop references to the lower vnode.
754 * VOP_INACTIVE() will be called by vrele() if necessary.
755 */
759 vput(lowervp);
760 vrele (lowervp);
756 vrele(lowervp);
757 vrele(lowervp);
761
762 vdata = vp->v_data;
763 vp->v_data = NULL;
764 FREE(vdata, M_NULLFSNODE);
765
766 return (0);
767}
768

--- 95 unchanged lines hidden ---
758
759 vdata = vp->v_data;
760 vp->v_data = NULL;
761 FREE(vdata, M_NULLFSNODE);
762
763 return (0);
764}
765

--- 95 unchanged lines hidden ---