spin_unlock(&inode->i_lock); 
__nfs_revalidate_inode(struct nfs_server *server, struct inode *inode){	int		 status = -ESTALE;	struct nfs_fattr fattr;	struct nfs_inode *nfsi = NFS_I(inode);	unsigned long verifier;	unsigned long cache_validity;	dfprintk(PAGECACHE, "NFS: revalidating (%s/%Ld)\n",		inode->i_sb->s_id, (long long)NFS_FILEID(inode));	lock_kernel();	if (!inode || is_bad_inode(inode)) 		goto out_nowait;	if (NFS_STALE(inode)) 		goto out_nowait;	status = nfs_wait_on_inode(inode);	if (status < 0)		goto out;	if (NFS_STALE(inode)) {		status = -ESTALE;		/* Do we trust the cached ESTALE? */		if (NFS_ATTRTIMEO(inode) != 0) {			if (nfsi->cache_validity & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ATIME)) {				/* no */			} else				goto out;		}	}	/* Protect against RPC races by saving the change attribute */	verifier = nfs_save_change_attribute(inode);	status = NFS_PROTO(inode)->getattr(server, NFS_FH(inode), &fattr);	if (status != 0) {		dfprintk(PAGECACHE, "nfs_revalidate_inode: (%s/%Ld) getattr failed, error=%d\n",			 inode->i_sb->s_id,			 (long long)NFS_FILEID(inode), status);		if (status == -ESTALE) {			nfs_zap_caches(inode);			if (!S_ISDIR(inode->i_mode))				set_bit(NFS_INO_STALE, &NFS_FLAGS(inode));		}		goto out;	}	status = nfs_update_inode(inode, &fattr, verifier);	if (status) {		dfprintk(PAGECACHE, "nfs_revalidate_inode: (%s/%Ld) refresh failed, error=%d\n",			 inode->i_sb->s_id,			 (long long)NFS_FILEID(inode), status);		goto out;	}	cache_validity = nfsi->cache_validity;	nfsi->cache_validity &= ~NFS_INO_REVAL_PAGECACHE;	/*	 * We may need to keep the attributes marked as invalid if	 * we raced with nfs_end_attr_update().	 */	if (verifier == nfsi->cache_change_attribute)		nfsi->cache_validity &= ~(NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ATIME);	nfs_revalidate_mapping(inode, inode->i_mapping);	if (cache_validity & NFS_INO_INVALID_ACL)		nfs_zap_acl_cache(inode);	dfprintk(PAGECACHE, "NFS: (%s/%Ld) revalidation complete\n",		inode->i_sb->s_id,		(long long)NFS_FILEID(inode)); out:	nfs_wake_up_inode(inode); out_nowait:	unlock_kernel();	return status;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dc59250c6ebed099a9bc0a11298e2281dd896657/inode.c/buggy/fs/nfs/inode.c