Eliminated the "physstrat" wart and merged it into kern_physio.c. This
[unix-history] / sys / kern / vfs_lookup.c
index 05a7a12..ce20836 100644 (file)
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *     @(#)vfs_lookup.c        7.32 (Berkeley) 5/21/91
- *
- * PATCHES MAGIC                LEVEL   PATCH THAT GOT US HERE
- * --------------------         -----   ----------------------
- * CURRENT PATCH LEVEL:         1       00006
- * --------------------         -----   ----------------------
- *
- * 17 Aug 92   Christoph Robitschko    Fixed parent of chroot panic
+ *     from: @(#)vfs_lookup.c  7.32 (Berkeley) 5/21/91
+ *     $Id: vfs_lookup.c,v 1.4 1993/11/07 21:44:48 wollman Exp $
  */
 
 #include "param.h"
  */
 
 #include "param.h"
+#include "systm.h"
 #include "syslimits.h"
 #include "time.h"
 #include "namei.h"
 #include "syslimits.h"
 #include "time.h"
 #include "namei.h"
@@ -55,6 +50,8 @@
 #include "ktrace.h"
 #endif
 
 #include "ktrace.h"
 #endif
 
+u_long nextvnodeid;
+
 /*
  * Convert a pathname into a pointer to a locked inode.
  *
 /*
  * Convert a pathname into a pointer to a locked inode.
  *
@@ -75,6 +72,7 @@
  *             if symbolic link, massage name in buffer and continue
  *     }
  */
  *             if symbolic link, massage name in buffer and continue
  *     }
  */
+int
 namei(ndp, p)
        register struct nameidata *ndp;
        struct proc *p;
 namei(ndp, p)
        register struct nameidata *ndp;
        struct proc *p;
@@ -97,10 +95,10 @@ namei(ndp, p)
                MALLOC(ndp->ni_pnbuf, caddr_t, MAXPATHLEN, M_NAMEI, M_WAITOK);
        if (ndp->ni_segflg == UIO_SYSSPACE)
                error = copystr(ndp->ni_dirp, ndp->ni_pnbuf,
                MALLOC(ndp->ni_pnbuf, caddr_t, MAXPATHLEN, M_NAMEI, M_WAITOK);
        if (ndp->ni_segflg == UIO_SYSSPACE)
                error = copystr(ndp->ni_dirp, ndp->ni_pnbuf,
-                           MAXPATHLEN, &ndp->ni_pathlen);
+                           MAXPATHLEN, (u_int *)&ndp->ni_pathlen);
        else
                error = copyinstr(ndp->ni_dirp, ndp->ni_pnbuf,
        else
                error = copyinstr(ndp->ni_dirp, ndp->ni_pnbuf,
-                           MAXPATHLEN, &ndp->ni_pathlen);
+                           MAXPATHLEN, (u_int *)&ndp->ni_pathlen);
        if (error) {
                free(ndp->ni_pnbuf, M_NAMEI);
                ndp->ni_vp = NULL;
        if (error) {
                free(ndp->ni_pnbuf, M_NAMEI);
                ndp->ni_vp = NULL;
@@ -236,6 +234,7 @@ namei(ndp, p)
  *         if LOCKPARENT set, return locked parent in ni_dvp
  *         if WANTPARENT set, return unlocked parent in ni_dvp
  */
  *         if LOCKPARENT set, return locked parent in ni_dvp
  *         if WANTPARENT set, return unlocked parent in ni_dvp
  */
+int
 lookup(ndp, p)
        register struct nameidata *ndp;
        struct proc *p;
 lookup(ndp, p)
        register struct nameidata *ndp;
        struct proc *p;
@@ -405,7 +404,7 @@ mntloop:
               (ndp->ni_nameiop & NOCROSSMOUNT) == 0) {
                while(mp->mnt_flag & MNT_MLOCK) {
                        mp->mnt_flag |= MNT_MWAIT;
               (ndp->ni_nameiop & NOCROSSMOUNT) == 0) {
                while(mp->mnt_flag & MNT_MLOCK) {
                        mp->mnt_flag |= MNT_MWAIT;
-                       sleep((caddr_t)mp, PVFS);
+                       tsleep((caddr_t)mp, PVFS, "lookup", 0);
                        goto mntloop;
                }
                if (error = VFS_ROOT(dp->v_mountedhere, &tdp))
                        goto mntloop;
                }
                if (error = VFS_ROOT(dp->v_mountedhere, &tdp))