rem: panic("path_to_vnode: could not lookup vnode (fsid 0x%x vnid 0x%Lx)\n", vnode->fs_id, vnid);
add: panic("path_to_vnode: could not lookup vnode (fsid 0x%x vnid 0x%Lx)\n", vnode->fs_id, vnodeID);
context: path_to_vnode(char *path, struct vnode **_vnode, bool kernel){	char *nextPath;	struct vnode *vnode;	struct vnode *nextVnode;	vnode_id vnid;	int err = 0;	if (!path)		return EINVAL;	// figure out if we need to start at root or at cwd	if (*path == '/') {		while (*++path == '/')			;		vnode = root_vnode;		inc_vnode_ref_count(vnode);	} else {		struct io_context *context = get_current_io_context(kernel);		mutex_lock(&context->io_mutex);		vnode = context->cwd;		inc_vnode_ref_count(vnode);		mutex_unlock(&context->io_mutex);	}	for (;;) {		PRINT(("path_to_vnode: top of loop. p = %p, *p = %c, p = '%s'\n", path, *path, path));		// done?		if (*path == '\0') {			err = 0;			break;		}		// walk to find the next component		for (nextPath = path + 1;*nextPath != '\0' && *nextPath != '/';nextPath++);		if (*nextPath == '/') {			*nextPath = '\0';			do				nextPath++;			while (*nextPath == '/');		}		// see if the .. is at the root of a mount		if (strcmp("..", path) == 0 && vnode->mount->root_vnode == vnode) {			// move to the covered vnode so we pass the '..' parse to the underlying filesystem			if (vnode->mount->covers_vnode) {				nextVnode = vnode->mount->covers_vnode;				inc_vnode_ref_count(nextVnode);				dec_vnode_ref_count(vnode, false);				vnode = nextVnode;			}		}		// tell the filesystem to parse this path		err = FS_CALL(vnode,fs_lookup)(vnode->mount->cookie, vnode->private_node, path, &vnid);		if (err < 0) {			dec_vnode_ref_count(vnode, false);			goto out;		}		// lookup the vnode, the call to fs_lookup should have caused a get_vnode to be called		// from inside the filesystem, thus the vnode would have to be in the list and it's		// ref count incremented at this point		mutex_lock(&vfs_vnode_mutex);		nextVnode = lookup_vnode(vnode->fs_id, vnid);		mutex_unlock(&vfs_vnode_mutex);		if (!nextVnode) {			// pretty screwed up here			panic("path_to_vnode: could not lookup vnode (fsid 0x%x vnid 0x%Lx)\n", vnode->fs_id, vnid);			err = ERR_VFS_PATH_NOT_FOUND;			dec_vnode_ref_count(vnode, false);			goto out;		}		// decrease the ref count on the old dir we just looked up into		dec_vnode_ref_count(vnode, false);		path = nextPath;		vnode = nextVnode;		// see if we hit a mount point		if (vnode->covered_by) {			nextVnode = vnode->covered_by;			inc_vnode_ref_count(nextVnode);			dec_vnode_ref_count(vnode, false);			vnode = nextVnode;		}	}	*_vnode = vnode;out:	return err;}