static int
 rpc_lookup_parent(char *path, struct nameidata *nd)
 {
+       struct vfsmount *mnt;
+
        if (path[0] == '\0')
                return -ENOENT;
-       nd->mnt = rpc_get_mount();
-       if (IS_ERR(nd->mnt)) {
+
+       mnt = rpc_get_mount();
+       if (IS_ERR(mnt)) {
                printk(KERN_WARNING "%s: %s failed to mount "
                               "pseudofilesystem \n", __FILE__, __FUNCTION__);
-               return PTR_ERR(nd->mnt);
+               return PTR_ERR(mnt);
        }
-       mntget(nd->mnt);
-       nd->dentry = dget(rpc_mount->mnt_root);
-       nd->last_type = LAST_ROOT;
-       nd->flags = LOOKUP_PARENT;
-       nd->depth = 0;
 
-       if (path_walk(path, nd)) {
+       if (vfs_path_lookup(mnt->mnt_root, mnt, path, LOOKUP_PARENT, nd)) {
                printk(KERN_WARNING "%s: %s failed to find path %s\n",
                                __FILE__, __FUNCTION__, path);
                rpc_put_mount();