int segs, nbr, max_segs, b_size, priority, order, got; 
int segs, nbr, max_segs, b_size, order, got; gfp_t priority; 
static int enlarge_buffer(struct st_buffer * STbuffer, int new_size, int need_dma){	int segs, nbr, max_segs, b_size, priority, order, got;	if (new_size <= STbuffer->buffer_size)		return 1;	if (STbuffer->buffer_size <= PAGE_SIZE)		normalize_buffer(STbuffer);  /* Avoid extra segment */	max_segs = STbuffer->use_sg;	nbr = max_segs - STbuffer->frp_segs;	if (nbr <= 0)		return 0;	priority = GFP_KERNEL | __GFP_NOWARN;	if (need_dma)		priority |= GFP_DMA;	for (b_size = PAGE_SIZE, order=0;	     b_size < new_size - STbuffer->buffer_size;	     order++, b_size *= 2)		;  /* empty */	for (segs = STbuffer->frp_segs, got = STbuffer->buffer_size;	     segs < max_segs && got < new_size;) {		STbuffer->frp[segs].page = alloc_pages(priority, order);		if (STbuffer->frp[segs].page == NULL) {			if (new_size - got <= (max_segs - segs) * b_size / 2) {				b_size /= 2; /* Large enough for the rest of the buffers */				order--;				continue;			}			DEB(STbuffer->buffer_size = got);			normalize_buffer(STbuffer);			return 0;		}		STbuffer->frp[segs].length = b_size;		STbuffer->frp_segs += 1;		got += b_size;		STbuffer->buffer_size = got;		segs++;	}	STbuffer->b_data = page_address(STbuffer->frp[0].page);	return 1;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/c53033f6b0bd7cc133b7f433083f0394cf29ac70/st.c/clean/drivers/scsi/st.c