null_vnops.c (232303) | null_vnops.c (234607) |
---|---|
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 --- 22 unchanged lines hidden (view full) --- 31 * 32 * @(#)null_vnops.c 8.6 (Berkeley) 5/27/95 33 * 34 * Ancestors: 35 * @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92 36 * ...and... 37 * @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project 38 * | 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 --- 22 unchanged lines hidden (view full) --- 31 * 32 * @(#)null_vnops.c 8.6 (Berkeley) 5/27/95 33 * 34 * Ancestors: 35 * @(#)lofs_vnops.c 1.2 (Berkeley) 6/18/92 36 * ...and... 37 * @(#)null_vnodeops.c 1.20 92/07/07 UCLA Ficus project 38 * |
39 * $FreeBSD: head/sys/fs/nullfs/null_vnops.c 232303 2012-02-29 15:15:36Z kib $ | 39 * $FreeBSD: head/sys/fs/nullfs/null_vnops.c 234607 2012-04-23 14:10:34Z trasz $ |
40 */ 41 42/* 43 * Null Layer 44 * 45 * (See mount_nullfs(8) for more information.) 46 * 47 * The null layer duplicates a portion of the filesystem --- 625 unchanged lines hidden (view full) --- 673 * appropriate VXLOCK stuff is done because other process can find this 674 * vnode in hash during inactivation and may be sitting in vget() and waiting 675 * for null_inactive to unlock vnode. Thus we will do all those in VOP_RECLAIM. 676 */ 677static int 678null_inactive(struct vop_inactive_args *ap) 679{ 680 struct vnode *vp = ap->a_vp; | 40 */ 41 42/* 43 * Null Layer 44 * 45 * (See mount_nullfs(8) for more information.) 46 * 47 * The null layer duplicates a portion of the filesystem --- 625 unchanged lines hidden (view full) --- 673 * appropriate VXLOCK stuff is done because other process can find this 674 * vnode in hash during inactivation and may be sitting in vget() and waiting 675 * for null_inactive to unlock vnode. Thus we will do all those in VOP_RECLAIM. 676 */ 677static int 678null_inactive(struct vop_inactive_args *ap) 679{ 680 struct vnode *vp = ap->a_vp; |
681 struct thread *td = ap->a_td; | |
682 683 vp->v_object = NULL; 684 685 /* 686 * If this is the last reference, then free up the vnode 687 * so as not to tie up the lower vnodes. 688 */ | 681 682 vp->v_object = NULL; 683 684 /* 685 * If this is the last reference, then free up the vnode 686 * so as not to tie up the lower vnodes. 687 */ |
689 vrecycle(vp, td); | 688 vrecycle(vp); |
690 691 return (0); 692} 693 694/* 695 * Now, the VXLOCK is in force and we're free to destroy the null vnode. 696 */ 697static int --- 146 unchanged lines hidden --- | 689 690 return (0); 691} 692 693/* 694 * Now, the VXLOCK is in force and we're free to destroy the null vnode. 695 */ 696static int --- 146 unchanged lines hidden --- |