Deleted Added
full compact
vfs_lookup.c (177997) vfs_lookup.c (182542)
1/*-
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 * (c) UNIX System Laboratories, Inc.
5 * All or some portions of this file are derived from material licensed
6 * to the University of California by American Telephone and Telegraph
7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 * the permission of UNIX System Laboratories, Inc.

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

30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * @(#)vfs_lookup.c 8.4 (Berkeley) 2/16/94
35 */
36
37#include <sys/cdefs.h>
1/*-
2 * Copyright (c) 1982, 1986, 1989, 1993
3 * The Regents of the University of California. All rights reserved.
4 * (c) UNIX System Laboratories, Inc.
5 * All or some portions of this file are derived from material licensed
6 * to the University of California by American Telephone and Telegraph
7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 * the permission of UNIX System Laboratories, Inc.

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

30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 * SUCH DAMAGE.
33 *
34 * @(#)vfs_lookup.c 8.4 (Berkeley) 2/16/94
35 */
36
37#include <sys/cdefs.h>
38__FBSDID("$FreeBSD: head/sys/kern/vfs_lookup.c 177997 2008-04-08 09:45:49Z kib $");
38__FBSDID("$FreeBSD: head/sys/kern/vfs_lookup.c 182542 2008-08-31 14:26:08Z attilio $");
39
40#include "opt_ktrace.h"
41#include "opt_mac.h"
42#include "opt_vfs.h"
43
44#include <sys/param.h>
45#include <sys/systm.h>
46#include <sys/kernel.h>

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

683 vfslocked = VFS_LOCK_GIANT(dp->v_mount);
684
685 /*
686 * Check to see if the vnode has been mounted on;
687 * if so find the root of the mounted filesystem.
688 */
689 while (dp->v_type == VDIR && (mp = dp->v_mountedhere) &&
690 (cnp->cn_flags & NOCROSSMOUNT) == 0) {
39
40#include "opt_ktrace.h"
41#include "opt_mac.h"
42#include "opt_vfs.h"
43
44#include <sys/param.h>
45#include <sys/systm.h>
46#include <sys/kernel.h>

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

683 vfslocked = VFS_LOCK_GIANT(dp->v_mount);
684
685 /*
686 * Check to see if the vnode has been mounted on;
687 * if so find the root of the mounted filesystem.
688 */
689 while (dp->v_type == VDIR && (mp = dp->v_mountedhere) &&
690 (cnp->cn_flags & NOCROSSMOUNT) == 0) {
691 if (vfs_busy(mp, 0, 0, td))
691 if (vfs_busy(mp, 0, 0))
692 continue;
693 vput(dp);
694 VFS_UNLOCK_GIANT(vfslocked);
695 vfslocked = VFS_LOCK_GIANT(mp);
696 if (dp != ndp->ni_dvp)
697 vput(ndp->ni_dvp);
698 else
699 vrele(ndp->ni_dvp);
700 VFS_UNLOCK_GIANT(dvfslocked);
701 dvfslocked = 0;
702 vref(vp_crossmp);
703 ndp->ni_dvp = vp_crossmp;
704 error = VFS_ROOT(mp, compute_cn_lkflags(mp, cnp->cn_lkflags), &tdp, td);
692 continue;
693 vput(dp);
694 VFS_UNLOCK_GIANT(vfslocked);
695 vfslocked = VFS_LOCK_GIANT(mp);
696 if (dp != ndp->ni_dvp)
697 vput(ndp->ni_dvp);
698 else
699 vrele(ndp->ni_dvp);
700 VFS_UNLOCK_GIANT(dvfslocked);
701 dvfslocked = 0;
702 vref(vp_crossmp);
703 ndp->ni_dvp = vp_crossmp;
704 error = VFS_ROOT(mp, compute_cn_lkflags(mp, cnp->cn_lkflags), &tdp, td);
705 vfs_unbusy(mp, td);
705 vfs_unbusy(mp);
706 if (vn_lock(vp_crossmp, LK_SHARED | LK_NOWAIT))
707 panic("vp_crossmp exclusively locked or reclaimed");
708 if (error) {
709 dpunlocked = 1;
710 goto bad2;
711 }
712 ndp->ni_vp = dp = tdp;
713 }

--- 426 unchanged lines hidden ---
706 if (vn_lock(vp_crossmp, LK_SHARED | LK_NOWAIT))
707 panic("vp_crossmp exclusively locked or reclaimed");
708 if (error) {
709 dpunlocked = 1;
710 goto bad2;
711 }
712 ndp->ni_vp = dp = tdp;
713 }

--- 426 unchanged lines hidden ---