int gfp_mask = GFP_NOIO | __GFP_HIGHMEM; 
gfp_t gfp_mask = GFP_NOIO | __GFP_HIGHMEM; 
crypt_alloc_buffer(struct crypt_config *cc, unsigned int size,                   struct bio *base_bio, unsigned int *bio_vec_idx){	struct bio *bio;	unsigned int nr_iovecs = (size + PAGE_SIZE - 1) >> PAGE_SHIFT;	int gfp_mask = GFP_NOIO | __GFP_HIGHMEM;	unsigned int i;	/*	 * Use __GFP_NOMEMALLOC to tell the VM to act less aggressively and	 * to fail earlier.  This is not necessary but increases throughput.	 * FIXME: Is this really intelligent?	 */	if (base_bio)		bio = bio_clone(base_bio, GFP_NOIO|__GFP_NOMEMALLOC);	else		bio = bio_alloc(GFP_NOIO|__GFP_NOMEMALLOC, nr_iovecs);	if (!bio)		return NULL;	/* if the last bio was not complete, continue where that one ended */	bio->bi_idx = *bio_vec_idx;	bio->bi_vcnt = *bio_vec_idx;	bio->bi_size = 0;	bio->bi_flags &= ~(1 << BIO_SEG_VALID);	/* bio->bi_idx pages have already been allocated */	size -= bio->bi_idx * PAGE_SIZE;	for(i = bio->bi_idx; i < nr_iovecs; i++) {		struct bio_vec *bv = bio_iovec_idx(bio, i);		bv->bv_page = mempool_alloc(cc->page_pool, gfp_mask);		if (!bv->bv_page)			break;		/*		 * if additional pages cannot be allocated without waiting,		 * return a partially allocated bio, the caller will then try		 * to allocate additional bios while submitting this partial bio		 */		if ((i - bio->bi_idx) == (MIN_BIO_PAGES - 1))			gfp_mask = (gfp_mask | __GFP_NOWARN) & ~__GFP_WAIT;		bv->bv_offset = 0;		if (size > PAGE_SIZE)			bv->bv_len = PAGE_SIZE;		else			bv->bv_len = size;		bio->bi_size += bv->bv_len;		bio->bi_vcnt++;		size -= bv->bv_len;	}	if (!bio->bi_size) {		bio_put(bio);		return NULL;	}	/*	 * Remember the last bio_vec allocated to be able	 * to correctly continue after the splitting.	 */	*bio_vec_idx = bio->bi_vcnt;	return bio;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/b4e3ca1ab1ae9ae86134126dcdc88da1caaa32ca/dm-crypt.c/clean/drivers/md/dm-crypt.c