--- src/sys/vfs/udf/udf_vfsops.c 2004/10/12 19:21:10 1.9 +++ src/sys/vfs/udf/udf_vfsops.c 2004/11/12 00:09:51 1.10 @@ -84,7 +84,7 @@ #include #include #include -#include +#include #include #include #include @@ -139,7 +139,7 @@ udf_mount(struct mount *mp, char *path, struct udf_mnt *imp = 0; size_t size; int error; - struct nameidata nd; + struct nlookupdata nd; if ((mp->mnt_flag & MNT_RDONLY) == 0) return (EROFS); @@ -161,11 +161,15 @@ udf_mount(struct mount *mp, char *path, } /* Check that the mount device exists */ - NDINIT(&nd, NAMEI_LOOKUP, CNP_FOLLOW, UIO_USERSPACE, args.fspec, td); - if ((error = namei(&nd))) - return(error); - NDFREE(&nd, NDF_ONLY_PNBUF); - devvp = nd.ni_vp; + devvp = NULL; + error = nlookup_init(&nd, args.fspec, UIO_USERSPACE, NLC_FOLLOW); + if (error == 0) + error = nlookup(&nd); + if (error == 0) + error = cache_vref(nd.nl_ncp, nd.nl_cred, &devvp); + nlookup_done(&nd); + if (error) + return (error); if (vn_isdisk(devvp, &error) == 0) { vrele(devvp); @@ -255,7 +259,7 @@ udf_mountfs(struct vnode *devvp, struct return(error); vn_lock(devvp, LK_EXCLUSIVE | LK_RETRY, td); - error = VOP_OPEN(devvp, FREAD, FSCRED, td); + error = VOP_OPEN(devvp, FREAD, FSCRED, NULL, td); VOP_UNLOCK(devvp, 0, td); if (error) return(error);