struct dentry	*dentry = file->f_dentry; 
int nfs_updatepage(struct file *file, struct page *page,		unsigned int offset, unsigned int count){	struct nfs_open_context *ctx = (struct nfs_open_context *)file->private_data;	struct dentry	*dentry = file->f_dentry;	struct inode	*inode = page->mapping->host;	struct nfs_page	*req;	int		status = 0;	dprintk("NFS:      nfs_updatepage(%s/%s %d@%Ld)\n",		dentry->d_parent->d_name.name, dentry->d_name.name,		count, (long long)(page_offset(page) +offset));	if (IS_SYNC(inode)) {		status = nfs_writepage_sync(ctx, inode, page, offset, count, 0);		if (status > 0) {			if (offset == 0 && status == PAGE_CACHE_SIZE)				SetPageUptodate(page);			return 0;		}		return status;	}	/* If we're not using byte range locks, and we know the page	 * is entirely in cache, it may be more efficient to avoid	 * fragmenting write requests.	 */	if (PageUptodate(page) && inode->i_flock == NULL && !(file->f_mode & O_SYNC)) {		loff_t end_offs = i_size_read(inode) - 1;		unsigned long end_index = end_offs >> PAGE_CACHE_SHIFT;		count += offset;		offset = 0;		if (unlikely(end_offs < 0)) {			/* Do nothing */		} else if (page->index == end_index) {			unsigned int pglen;			pglen = (unsigned int)(end_offs & (PAGE_CACHE_SIZE-1)) + 1;			if (count < pglen)				count = pglen;		} else if (page->index < end_index)			count = PAGE_CACHE_SIZE;	}	/*	 * Try to find an NFS request corresponding to this page	 * and update it.	 * If the existing request cannot be updated, we must flush	 * it out now.	 */	do {		req = nfs_update_request(ctx, inode, page, offset, count);		status = (IS_ERR(req)) ? PTR_ERR(req) : 0;		if (status != -EBUSY)			break;		/* Request could not be updated. Flush it out and try again */		status = nfs_wb_page(inode, page);	} while (status >= 0);	if (status < 0)		goto done;	status = 0;	/* Update file length */	nfs_grow_file(page, offset, count);	/* Set the PG_uptodate flag? */	nfs_mark_uptodate(page, req->wb_pgbase, req->wb_bytes);	nfs_unlock_request(req);done:        dprintk("NFS:      nfs_updatepage returns %d (isize %Ld)\n",			status, (long long)i_size_read(inode));	if (status < 0)		ClearPageUptodate(page);	return status;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/0bbacc402e67abca8794a8401c1621dc0c0202e9/write.c/clean/fs/nfs/write.c