t = xfs_node_find(&xfs[fd], &message->handle); if (t != 0) {  if (DATA_FROM_XNODE(t)) { vrele(DATA_FROM_XNODE(t)); DATA_FROM_XNODE(t) = (struct vnode *) 0; } XFS_TOKEN_CLEAR(t, ~0, XFS_OPEN_MASK | XFS_ATTR_MASK | XFS_DATA_MASK | XFS_LOCK_MASK); cache_purge(XNODE_TO_VNODE(t)); } else { printf("XFS WARNING! xfs_message_invalidnode: no node!\n"); error = ENOENT;
t = xfs_node_find(&xfs[fd], &message->handle); if (t != 0) {  if (DATA_FROM_XNODE(t)) { vrele(DATA_FROM_XNODE(t)); DATA_FROM_XNODE(t) = (struct vnode *) 0;
xfs_message_invalidnode(int fd,			struct xfs_message_invalidnode *message,			u_int size,			struct proc *p){	int		error = 0;	struct xfs_node	*t;	XFSDEB(XDEBMSG, ("xfs_message_invalidnode\n"));	t = xfs_node_find(&xfs[fd], &message->handle);	if (t != 0) {		/* XXX Really need to put back dirty data first. */		if (DATA_FROM_XNODE(t)) {			vrele(DATA_FROM_XNODE(t));			DATA_FROM_XNODE(t) = (struct vnode *) 0;		}		XFS_TOKEN_CLEAR(t, ~0,				XFS_OPEN_MASK | XFS_ATTR_MASK |				XFS_DATA_MASK | XFS_LOCK_MASK);		cache_purge(XNODE_TO_VNODE(t));	} else {		printf("XFS WARNING! xfs_message_invalidnode: no node!\n");		error = ENOENT;	}	return error;}