static int raid5_end_read_request (struct bio * bi, unsigned int bytes_done, 
static int raid5_end_read_request(struct bio * bi, unsigned int bytes_done, 
static int raid5_end_read_request (struct bio * bi, unsigned int bytes_done,				   int error){ 	struct stripe_head *sh = bi->bi_private;	raid5_conf_t *conf = sh->raid_conf;	int disks = conf->raid_disks, i;	int uptodate = test_bit(BIO_UPTODATE, &bi->bi_flags);	if (bi->bi_size)		return 1;	for (i=0 ; i<disks; i++)		if (bi == &sh->dev[i].req)			break;	PRINTK("end_read_request %llu/%d, count: %d, uptodate %d.\n", 		(unsigned long long)sh->sector, i, atomic_read(&sh->count), 		uptodate);	if (i == disks) {		BUG();		return 0;	}	if (uptodate) {#if 0		struct bio *bio;		unsigned long flags;		spin_lock_irqsave(&conf->device_lock, flags);		/* we can return a buffer if we bypassed the cache or		 * if the top buffer is not in highmem.  If there are		 * multiple buffers, leave the extra work to		 * handle_stripe		 */		buffer = sh->bh_read[i];		if (buffer &&		    (!PageHighMem(buffer->b_page)		     || buffer->b_page == bh->b_page )			) {			sh->bh_read[i] = buffer->b_reqnext;			buffer->b_reqnext = NULL;		} else			buffer = NULL;		spin_unlock_irqrestore(&conf->device_lock, flags);		if (sh->bh_page[i]==bh->b_page)			set_buffer_uptodate(bh);		if (buffer) {			if (buffer->b_page != bh->b_page)				memcpy(buffer->b_data, bh->b_data, bh->b_size);			buffer->b_end_io(buffer, 1);		}#else		set_bit(R5_UPTODATE, &sh->dev[i].flags);#endif			} else {		md_error(conf->mddev, conf->disks[i].rdev);		clear_bit(R5_UPTODATE, &sh->dev[i].flags);	}	rdev_dec_pending(conf->disks[i].rdev, conf->mddev);#if 0	/* must restore b_page before unlocking buffer... */	if (sh->bh_page[i] != bh->b_page) {		bh->b_page = sh->bh_page[i];		bh->b_data = page_address(bh->b_page);		clear_buffer_uptodate(bh);	}#endif	clear_bit(R5_LOCKED, &sh->dev[i].flags);	set_bit(STRIPE_HANDLE, &sh->state);	release_stripe(sh);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/4e5314b56a7ea11c7a5f2b8418992b2f49648a25/raid5.c/clean/drivers/md/raid5.c