sector_div(x, (unsigned long)conf->hash_spacing); 
sector_div(x, (u32)conf->hash_spacing); 
static int raid0_make_request (request_queue_t *q, struct bio *bio){	mddev_t *mddev = q->queuedata;	unsigned int sect_in_chunk, chunksize_bits,  chunk_size, chunk_sects;	raid0_conf_t *conf = mddev_to_conf(mddev);	struct strip_zone *zone;	mdk_rdev_t *tmp_dev;	unsigned long chunk;	sector_t block, rsect;	if (bio_data_dir(bio)==WRITE) {		disk_stat_inc(mddev->gendisk, writes);		disk_stat_add(mddev->gendisk, write_sectors, bio_sectors(bio));	} else {		disk_stat_inc(mddev->gendisk, reads);		disk_stat_add(mddev->gendisk, read_sectors, bio_sectors(bio));	}	chunk_size = mddev->chunk_size >> 10;	chunk_sects = mddev->chunk_size >> 9;	chunksize_bits = ffz(~chunk_size);	block = bio->bi_sector >> 1;		if (unlikely(chunk_sects < (bio->bi_sector & (chunk_sects - 1)) + (bio->bi_size >> 9))) {		struct bio_pair *bp;		/* Sanity check -- queue functions should prevent this happening */		if (bio->bi_vcnt != 1 ||		    bio->bi_idx != 0)			goto bad_map;		/* This is a one page bio that upper layers		 * refuse to split for us, so we need to split it.		 */		bp = bio_split(bio, bio_split_pool, chunk_sects - (bio->bi_sector & (chunk_sects - 1)) );		if (raid0_make_request(q, &bp->bio1))			generic_make_request(&bp->bio1);		if (raid0_make_request(q, &bp->bio2))			generic_make_request(&bp->bio2);		bio_pair_release(bp);		return 0;	} 	{#if __GNUC__ < 3		volatile#endif		sector_t x = block >> conf->preshift;		sector_div(x, (unsigned long)conf->hash_spacing);		zone = conf->hash_table[x];	} 	while (block >= (zone->zone_offset + zone->size)) 		zone++;    	sect_in_chunk = bio->bi_sector & ((chunk_size<<1) -1);	{		sector_t x =  (block - zone->zone_offset) >> chunksize_bits;		sector_div(x, zone->nb_dev);		chunk = x;		BUG_ON(x != (sector_t)chunk);		x = block >> chunksize_bits;		tmp_dev = zone->dev[sector_div(x, zone->nb_dev)];	}	rsect = (((chunk << chunksize_bits) + zone->dev_offset)<<1)		+ sect_in_chunk; 	bio->bi_bdev = tmp_dev->bdev;	bio->bi_sector = rsect + tmp_dev->data_offset;	/*	 * Let the main block layer submit the IO and resolve recursion:	 */	return 1;bad_map:	printk("raid0_make_request bug: can't convert block across chunks"		" or bigger than %dk %llu %d\n", chunk_size, 		(unsigned long long)bio->bi_sector, bio->bi_size >> 10);	bio_io_error(bio, bio->bi_size);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/1eb29128c644581fa51f822545921394ad4f719f/raid0.c/buggy/drivers/md/raid0.c