__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 int flags;	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;	while (NFS_REVALIDATING(inode)) {		status = nfs_wait_on_inode(inode, NFS_INO_REVALIDATING);		if (status < 0)			goto out_nowait;		if (NFS_ATTRTIMEO(inode) == 0)			continue;		if (NFS_FLAGS(inode) & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_DATA|NFS_INO_INVALID_ATIME))			continue;		status = NFS_STALE(inode) ? -ESTALE : 0;		goto out_nowait;	}	NFS_FLAGS(inode) |= NFS_INO_REVALIDATING;	/* 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))				NFS_FLAGS(inode) |= NFS_INO_STALE;		}		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;	}	flags = nfsi->flags;	nfsi->flags &= ~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->flags &= ~(NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ATIME);	/* Do the page cache invalidation */	nfs_revalidate_mapping(inode, inode->i_mapping);	if (flags & 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_FLAGS(inode) &= ~NFS_INO_REVALIDATING;	wake_up(&nfsi->nfs_i_wait); out_nowait:	unlock_kernel();	return status;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/5529680981807b44abf3be30fb6d612ff04f68ff/inode.c/clean/fs/nfs/inode.c