data += PAGE_CACHE_SIZE; bytes_read -= PAGE_CACHE_SIZE; 
static void cifs_copy_cache_pages(struct address_space *mapping, 	struct list_head *pages, int bytes_read, char *data,	struct pagevec *plru_pvec){	struct page *page;	char *target;	while (bytes_read > 0) {		if (list_empty(pages))			break;		page = list_entry(pages->prev, struct page, lru);		list_del(&page->lru);		if (add_to_page_cache(page, mapping, page->index,				      GFP_KERNEL)) {			page_cache_release(page);			cFYI(1, ("Add page cache failed"));			continue;		}		target = kmap_atomic(page,KM_USER0);		if (PAGE_CACHE_SIZE > bytes_read) {			memcpy(target, data, bytes_read);			/* zero the tail end of this partial page */			memset(target + bytes_read, 0, 			       PAGE_CACHE_SIZE - bytes_read);			bytes_read = 0;		} else {			memcpy(target, data, PAGE_CACHE_SIZE);			bytes_read -= PAGE_CACHE_SIZE;		}		kunmap_atomic(target, KM_USER0);		flush_dcache_page(page);		SetPageUptodate(page);		unlock_page(page);		if (!pagevec_add(plru_pvec, page))			__pagevec_lru_add(plru_pvec);		data += PAGE_CACHE_SIZE;	}	return;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/3079ca621e9e09f4593c20a9a2f24237c355f683/file.c/clean/fs/cifs/file.c