dio->pages[0] = ZERO_PAGE(dio->curr_user_address); 
page_cache_get(page); dio->pages[0] = page; 
static int dio_refill_pages(struct dio *dio){	int ret;	int nr_pages;	nr_pages = min(dio->total_pages - dio->curr_page, DIO_PAGES);	down_read(&current->mm->mmap_sem);	ret = get_user_pages(		current,			/* Task for fault acounting */		current->mm,			/* whose pages? */		dio->curr_user_address,		/* Where from? */		nr_pages,			/* How many pages? */		dio->rw == READ,		/* Write to memory? */		0,				/* force (?) */		&dio->pages[0],		NULL);				/* vmas */	up_read(&current->mm->mmap_sem);	if (ret < 0 && dio->blocks_available && (dio->rw == WRITE)) {		/*		 * A memory fault, but the filesystem has some outstanding		 * mapped blocks.  We need to use those blocks up to avoid		 * leaking stale data in the file.		 */		if (dio->page_errors == 0)			dio->page_errors = ret;		dio->pages[0] = ZERO_PAGE(dio->curr_user_address);		dio->head = 0;		dio->tail = 1;		ret = 0;		goto out;	}	if (ret >= 0) {		dio->curr_user_address += ret * PAGE_SIZE;		dio->curr_page += ret;		dio->head = 0;		dio->tail = ret;		ret = 0;	}out:	return ret;	}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b5810039a54e5babf428e9a1e89fc1940fabff11/direct-io.c/clean/fs/direct-io.c