spin_unlock(&inode->i_lock); 
int nfs_readdir_filler(nfs_readdir_descriptor_t *desc, struct page *page){	struct file	*file = desc->file;	struct inode	*inode = file->f_dentry->d_inode;	struct rpc_cred	*cred = nfs_file_cred(file);	unsigned long	timestamp;	int		error;	dfprintk(VFS, "NFS: nfs_readdir_filler() reading cookie %Lu into page %lu.\n", (long long)desc->entry->cookie, page->index); again:	timestamp = jiffies;	error = NFS_PROTO(inode)->readdir(file->f_dentry, cred, desc->entry->cookie, page,					  NFS_SERVER(inode)->dtsize, desc->plus);	if (error < 0) {		/* We requested READDIRPLUS, but the server doesn't grok it */		if (error == -ENOTSUPP && desc->plus) {			NFS_SERVER(inode)->caps &= ~NFS_CAP_READDIRPLUS;			clear_bit(NFS_INO_ADVISE_RDPLUS, &NFS_FLAGS(inode));			desc->plus = 0;			goto again;		}		goto error;	}	SetPageUptodate(page);	NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME;	/* Ensure consistent page alignment of the data.	 * Note: assumes we have exclusive access to this mapping either	 *	 through inode->i_sem or some other mechanism.	 */	if (page->index == 0)		invalidate_inode_pages2_range(inode->i_mapping, PAGE_CACHE_SIZE, -1);	unlock_page(page);	return 0; error:	SetPageError(page);	unlock_page(page);	nfs_zap_caches(inode);	desc->error = error;	return -EIO;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dc59250c6ebed099a9bc0a11298e2281dd896657/dir.c/clean/fs/nfs/dir.c