inc_page_state(nr_bounce); 
static void __blk_queue_bounce(request_queue_t *q, struct bio **bio_orig,			mempool_t *pool){	struct page *page;	struct bio *bio = NULL;	int i, rw = bio_data_dir(*bio_orig);	struct bio_vec *to, *from;	bio_for_each_segment(from, *bio_orig, i) {		page = from->bv_page;		/*		 * is destination page below bounce pfn?		 */		if (page_to_pfn(page) < q->bounce_pfn)			continue;		/*		 * irk, bounce it		 */		if (!bio)			bio = bio_alloc(GFP_NOIO, (*bio_orig)->bi_vcnt);		to = bio->bi_io_vec + i;		to->bv_page = mempool_alloc(pool, q->bounce_gfp);		to->bv_len = from->bv_len;		to->bv_offset = from->bv_offset;		if (rw == WRITE) {			char *vto, *vfrom;			flush_dcache_page(from->bv_page);			vto = page_address(to->bv_page) + to->bv_offset;			vfrom = kmap(from->bv_page) + from->bv_offset;			memcpy(vto, vfrom, to->bv_len);			kunmap(from->bv_page);		}	}	/*	 * no pages bounced	 */	if (!bio)		return;	/*	 * at least one page was bounced, fill in possible non-highmem	 * pages	 */	__bio_for_each_segment(from, *bio_orig, i, 0) {		to = bio_iovec_idx(bio, i);		if (!to->bv_page) {			to->bv_page = from->bv_page;			to->bv_len = from->bv_len;			to->bv_offset = from->bv_offset;		}	}	bio->bi_bdev = (*bio_orig)->bi_bdev;	bio->bi_flags |= (1 << BIO_BOUNCED);	bio->bi_sector = (*bio_orig)->bi_sector;	bio->bi_rw = (*bio_orig)->bi_rw;	bio->bi_vcnt = (*bio_orig)->bi_vcnt;	bio->bi_idx = (*bio_orig)->bi_idx;	bio->bi_size = (*bio_orig)->bi_size;	if (pool == page_pool) {		bio->bi_end_io = bounce_end_io_write;		if (rw == READ)			bio->bi_end_io = bounce_end_io_read;	} else {		bio->bi_end_io = bounce_end_io_write_isa;		if (rw == READ)			bio->bi_end_io = bounce_end_io_read_isa;	}	bio->bi_private = *bio_orig;	*bio_orig = bio;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/edfbe2b0038723e5699ab22695ccd62b5542a5c1/highmem.c/clean/mm/highmem.c