spin_unlock(&inode->i_lock); 
int uncached_readdir(nfs_readdir_descriptor_t *desc, void *dirent,		     filldir_t filldir){	struct file	*file = desc->file;	struct inode	*inode = file->f_dentry->d_inode;	struct rpc_cred	*cred = nfs_file_cred(file);	struct page	*page = NULL;	int		status;	dfprintk(VFS, "NFS: uncached_readdir() searching for cookie %Lu\n", (unsigned long long)*desc->dir_cookie);	page = alloc_page(GFP_HIGHUSER);	if (!page) {		status = -ENOMEM;		goto out;	}	desc->error = NFS_PROTO(inode)->readdir(file->f_dentry, cred, *desc->dir_cookie,						page,						NFS_SERVER(inode)->dtsize,						desc->plus);	NFS_I(inode)->cache_validity |= NFS_INO_INVALID_ATIME;	desc->page = page;	desc->ptr = kmap(page);		/* matching kunmap in nfs_do_filldir */	if (desc->error >= 0) {		if ((status = dir_decode(desc)) == 0)			desc->entry->prev_cookie = *desc->dir_cookie;	} else		status = -EIO;	if (status < 0)		goto out_release;	status = nfs_do_filldir(desc, dirent, filldir);	/* Reset read descriptor so it searches the page cache from	 * the start upon the next call to readdir_search_pagecache() */	desc->page_index = 0;	desc->entry->cookie = desc->entry->prev_cookie = 0;	desc->entry->eof = 0; out:	dfprintk(VFS, "NFS: uncached_readdir() returns %d\n", status);	return status; out_release:	dir_page_release(desc);	goto out;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/dc59250c6ebed099a9bc0a11298e2281dd896657/dir.c/clean/fs/nfs/dir.c