return error;
if (error == 0) { xfs_vfs_unlock(vp, p); if (DATA_FROM_XNODE(t)) vrele(DATA_FROM_XNODE(t)); DATA_FROM_XNODE(t) = vp;  XFSDEB(XDEBMSG, ("xfs_message_installdata: t = %p;" " tokens = %x\n", t, message->node.tokens));  t->tokens = message->node.tokens; xfs_attr2vattr(&message->node.attr, &t->attr); #ifdef HAVE_KERNEL_VNODE_PAGER_SETSIZE vnode_pager_setsize(XNODE_TO_VNODE(t), t->attr.va_size); #endif if (XNODE_TO_VNODE(t)->v_type == VDIR && (message->flag & XFS_INVALID_DNLC)) cache_purge (XNODE_TO_VNODE(t)); bcopy(message->node.id, t->id, sizeof(t->id)); bcopy(message->node.rights, t->rights, sizeof(t->rights)); t->anonrights = message->node.anonrights; } else { printf("XFS PANIC WARNING! xfs_message_installdata failed!\n"); printf("Reason: lookup failed on cache file '%s', error = %d\n", message->cache_name, error); } vput (t_vnode); } else { printf("XFS PANIC WARNING! xfs_message_installdata failed\n"); printf("Reason: No node to install the data into!\n"); error = ENOENT; }  return error;
xfs_message_installdata(int fd,			struct xfs_message_installdata *message,			u_int size,			struct proc *p){	struct xfs_node	*t;	int		error = 0;	XFSDEB(XDEBMSG, ("xfs_message_installdata\n"));	t = xfs_node_find(&xfs[fd], &message->node.handle);	if (t != NULL) {		struct nameidata	nd;		char			tmp[CACHEHANDLESIZE + 1];		struct vnode		*vp;		bcopy((char *) &message->cache_handle.data, tmp, sizeof(tmp));		tmp[CACHEHANDLESIZE] = '\0';		XFSDEB(XDEBMSG, ("cache_handle = '%s'\n", tmp));		NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, tmp, p);		error = namei(&nd);		vp = nd.ni_vp;		if (error == 0) {			if (DATA_FROM_XNODE(t))				vrele(DATA_FROM_XNODE(t));			VOP_UNLOCK(vp, 0, p);			DATA_FROM_XNODE(t) = vp;			XFSDEB(XDEBMSG,			       ("xfs_message_installdata: t= %p tokens= %x\n",				t, message->node.tokens));			t->tokens = message->node.tokens;			xfs_attr2vattr(&message->node.attr, &t->attr);			if (XNODE_TO_VNODE(t)->v_type == VDIR)				cache_purge (XNODE_TO_VNODE(t));			bcopy(message->node.id, t->id, sizeof(t->id));			bcopy(message->node.rights, t->rights,			      sizeof(t->rights));			t->anonrights = message->node.anonrights;		} else {			printf("XFS WARNING! xfs_message_installdata fail!\n");			printf("Reason: lookup failed on cache file '%s', "			       "error = %d\n", tmp, error);		}	} else {		printf("XFS WARNING! xfs_message_installdata failed\n");		printf("Reason: No node to install the data into!\n");		error = ENOENT;	}	return error;}