r10_bio            73 drivers/md/raid10.c static void reshape_request_write(struct mddev *mddev, struct r10bio *r10_bio);
r10_bio           119 drivers/md/raid10.c 	struct r10bio *r10_bio;
r10_bio           125 drivers/md/raid10.c 	r10_bio = r10bio_pool_alloc(gfp_flags, conf);
r10_bio           126 drivers/md/raid10.c 	if (!r10_bio)
r10_bio           151 drivers/md/raid10.c 		r10_bio->devs[j].bio = bio;
r10_bio           157 drivers/md/raid10.c 		r10_bio->devs[j].repl_bio = bio;
r10_bio           164 drivers/md/raid10.c 		struct bio *rbio = r10_bio->devs[j].repl_bio;
r10_bio           171 drivers/md/raid10.c 		bio = r10_bio->devs[j].bio;
r10_bio           182 drivers/md/raid10.c 		rp->raid_bio = r10_bio;
r10_bio           190 drivers/md/raid10.c 	return r10_bio;
r10_bio           199 drivers/md/raid10.c 		if (r10_bio->devs[j].bio)
r10_bio           200 drivers/md/raid10.c 			bio_put(r10_bio->devs[j].bio);
r10_bio           201 drivers/md/raid10.c 		if (r10_bio->devs[j].repl_bio)
r10_bio           202 drivers/md/raid10.c 			bio_put(r10_bio->devs[j].repl_bio);
r10_bio           206 drivers/md/raid10.c 	rbio_pool_free(r10_bio, conf);
r10_bio           237 drivers/md/raid10.c static void put_all_bios(struct r10conf *conf, struct r10bio *r10_bio)
r10_bio           242 drivers/md/raid10.c 		struct bio **bio = & r10_bio->devs[i].bio;
r10_bio           246 drivers/md/raid10.c 		bio = &r10_bio->devs[i].repl_bio;
r10_bio           247 drivers/md/raid10.c 		if (r10_bio->read_slot < 0 && !BIO_SPECIAL(*bio))
r10_bio           253 drivers/md/raid10.c static void free_r10bio(struct r10bio *r10_bio)
r10_bio           255 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio           257 drivers/md/raid10.c 	put_all_bios(conf, r10_bio);
r10_bio           258 drivers/md/raid10.c 	mempool_free(r10_bio, &conf->r10bio_pool);
r10_bio           261 drivers/md/raid10.c static void put_buf(struct r10bio *r10_bio)
r10_bio           263 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio           265 drivers/md/raid10.c 	mempool_free(r10_bio, &conf->r10buf_pool);
r10_bio           270 drivers/md/raid10.c static void reschedule_retry(struct r10bio *r10_bio)
r10_bio           273 drivers/md/raid10.c 	struct mddev *mddev = r10_bio->mddev;
r10_bio           277 drivers/md/raid10.c 	list_add(&r10_bio->retry_list, &conf->retry_list);
r10_bio           292 drivers/md/raid10.c static void raid_end_bio_io(struct r10bio *r10_bio)
r10_bio           294 drivers/md/raid10.c 	struct bio *bio = r10_bio->master_bio;
r10_bio           295 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio           297 drivers/md/raid10.c 	if (!test_bit(R10BIO_Uptodate, &r10_bio->state))
r10_bio           307 drivers/md/raid10.c 	free_r10bio(r10_bio);
r10_bio           313 drivers/md/raid10.c static inline void update_head_pos(int slot, struct r10bio *r10_bio)
r10_bio           315 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio           317 drivers/md/raid10.c 	conf->mirrors[r10_bio->devs[slot].devnum].head_position =
r10_bio           318 drivers/md/raid10.c 		r10_bio->devs[slot].addr + (r10_bio->sectors);
r10_bio           324 drivers/md/raid10.c static int find_bio_disk(struct r10conf *conf, struct r10bio *r10_bio,
r10_bio           331 drivers/md/raid10.c 		if (r10_bio->devs[slot].bio == bio)
r10_bio           333 drivers/md/raid10.c 		if (r10_bio->devs[slot].repl_bio == bio) {
r10_bio           340 drivers/md/raid10.c 	update_head_pos(slot, r10_bio);
r10_bio           346 drivers/md/raid10.c 	return r10_bio->devs[slot].devnum;
r10_bio           352 drivers/md/raid10.c 	struct r10bio *r10_bio = bio->bi_private;
r10_bio           355 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio           357 drivers/md/raid10.c 	slot = r10_bio->read_slot;
r10_bio           358 drivers/md/raid10.c 	rdev = r10_bio->devs[slot].rdev;
r10_bio           362 drivers/md/raid10.c 	update_head_pos(slot, r10_bio);
r10_bio           374 drivers/md/raid10.c 		set_bit(R10BIO_Uptodate, &r10_bio->state);
r10_bio           381 drivers/md/raid10.c 		if (!_enough(conf, test_bit(R10BIO_Previous, &r10_bio->state),
r10_bio           386 drivers/md/raid10.c 		raid_end_bio_io(r10_bio);
r10_bio           396 drivers/md/raid10.c 				   (unsigned long long)r10_bio->sector);
r10_bio           397 drivers/md/raid10.c 		set_bit(R10BIO_ReadError, &r10_bio->state);
r10_bio           398 drivers/md/raid10.c 		reschedule_retry(r10_bio);
r10_bio           402 drivers/md/raid10.c static void close_write(struct r10bio *r10_bio)
r10_bio           405 drivers/md/raid10.c 	md_bitmap_endwrite(r10_bio->mddev->bitmap, r10_bio->sector,
r10_bio           406 drivers/md/raid10.c 			   r10_bio->sectors,
r10_bio           407 drivers/md/raid10.c 			   !test_bit(R10BIO_Degraded, &r10_bio->state),
r10_bio           409 drivers/md/raid10.c 	md_write_end(r10_bio->mddev);
r10_bio           412 drivers/md/raid10.c static void one_write_done(struct r10bio *r10_bio)
r10_bio           414 drivers/md/raid10.c 	if (atomic_dec_and_test(&r10_bio->remaining)) {
r10_bio           415 drivers/md/raid10.c 		if (test_bit(R10BIO_WriteError, &r10_bio->state))
r10_bio           416 drivers/md/raid10.c 			reschedule_retry(r10_bio);
r10_bio           418 drivers/md/raid10.c 			close_write(r10_bio);
r10_bio           419 drivers/md/raid10.c 			if (test_bit(R10BIO_MadeGood, &r10_bio->state))
r10_bio           420 drivers/md/raid10.c 				reschedule_retry(r10_bio);
r10_bio           422 drivers/md/raid10.c 				raid_end_bio_io(r10_bio);
r10_bio           429 drivers/md/raid10.c 	struct r10bio *r10_bio = bio->bi_private;
r10_bio           432 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio           440 drivers/md/raid10.c 	dev = find_bio_disk(conf, r10_bio, bio, &slot, &repl);
r10_bio           477 drivers/md/raid10.c 				set_bit(R10BIO_WriteError, &r10_bio->state);
r10_bio           479 drivers/md/raid10.c 				r10_bio->devs[slot].bio = NULL;
r10_bio           507 drivers/md/raid10.c 			set_bit(R10BIO_Uptodate, &r10_bio->state);
r10_bio           511 drivers/md/raid10.c 				r10_bio->devs[slot].addr,
r10_bio           512 drivers/md/raid10.c 				r10_bio->sectors,
r10_bio           516 drivers/md/raid10.c 				r10_bio->devs[slot].repl_bio = IO_MADE_GOOD;
r10_bio           518 drivers/md/raid10.c 				r10_bio->devs[slot].bio = IO_MADE_GOOD;
r10_bio           520 drivers/md/raid10.c 			set_bit(R10BIO_MadeGood, &r10_bio->state);
r10_bio           529 drivers/md/raid10.c 	one_write_done(r10_bio);
r10_bio           704 drivers/md/raid10.c 				    struct r10bio *r10_bio,
r10_bio           707 drivers/md/raid10.c 	const sector_t this_sector = r10_bio->sector;
r10_bio           709 drivers/md/raid10.c 	int sectors = r10_bio->sectors;
r10_bio           719 drivers/md/raid10.c 	raid10_find_phys(conf, r10_bio);
r10_bio           728 drivers/md/raid10.c 	clear_bit(R10BIO_FailFast, &r10_bio->state);
r10_bio           749 drivers/md/raid10.c 		if (r10_bio->devs[slot].bio == IO_BLOCKED)
r10_bio           751 drivers/md/raid10.c 		disk = r10_bio->devs[slot].devnum;
r10_bio           754 drivers/md/raid10.c 		    r10_bio->devs[slot].addr + sectors > rdev->recovery_offset)
r10_bio           760 drivers/md/raid10.c 		    r10_bio->devs[slot].addr + sectors > rdev->recovery_offset)
r10_bio           763 drivers/md/raid10.c 		dev_sector = r10_bio->devs[slot].addr;
r10_bio           809 drivers/md/raid10.c 			set_bit(R10BIO_FailFast, &r10_bio->state);
r10_bio           819 drivers/md/raid10.c 			new_distance = r10_bio->devs[slot].addr;
r10_bio           821 drivers/md/raid10.c 			new_distance = abs(r10_bio->devs[slot].addr -
r10_bio           842 drivers/md/raid10.c 		r10_bio->read_slot = slot;
r10_bio          1053 drivers/md/raid10.c static sector_t choose_data_offset(struct r10bio *r10_bio,
r10_bio          1057 drivers/md/raid10.c 	    test_bit(R10BIO_Previous, &r10_bio->state))
r10_bio          1135 drivers/md/raid10.c 				struct r10bio *r10_bio)
r10_bio          1144 drivers/md/raid10.c 	int slot = r10_bio->read_slot;
r10_bio          1148 drivers/md/raid10.c 	if (r10_bio->devs[slot].rdev) {
r10_bio          1164 drivers/md/raid10.c 		disk = r10_bio->devs[slot].devnum;
r10_bio          1171 drivers/md/raid10.c 			err_rdev = r10_bio->devs[slot].rdev;
r10_bio          1176 drivers/md/raid10.c 	regular_request_wait(mddev, conf, bio, r10_bio->sectors);
r10_bio          1177 drivers/md/raid10.c 	rdev = read_balance(conf, r10_bio, &max_sectors);
r10_bio          1182 drivers/md/raid10.c 					    (unsigned long long)r10_bio->sector);
r10_bio          1184 drivers/md/raid10.c 		raid_end_bio_io(r10_bio);
r10_bio          1191 drivers/md/raid10.c 				   (unsigned long long)r10_bio->sector);
r10_bio          1200 drivers/md/raid10.c 		r10_bio->master_bio = bio;
r10_bio          1201 drivers/md/raid10.c 		r10_bio->sectors = max_sectors;
r10_bio          1203 drivers/md/raid10.c 	slot = r10_bio->read_slot;
r10_bio          1207 drivers/md/raid10.c 	r10_bio->devs[slot].bio = read_bio;
r10_bio          1208 drivers/md/raid10.c 	r10_bio->devs[slot].rdev = rdev;
r10_bio          1210 drivers/md/raid10.c 	read_bio->bi_iter.bi_sector = r10_bio->devs[slot].addr +
r10_bio          1211 drivers/md/raid10.c 		choose_data_offset(r10_bio, rdev);
r10_bio          1216 drivers/md/raid10.c 	    test_bit(R10BIO_FailFast, &r10_bio->state))
r10_bio          1218 drivers/md/raid10.c 	read_bio->bi_private = r10_bio;
r10_bio          1223 drivers/md/raid10.c 	                              r10_bio->sector);
r10_bio          1228 drivers/md/raid10.c static void raid10_write_one_disk(struct mddev *mddev, struct r10bio *r10_bio,
r10_bio          1240 drivers/md/raid10.c 	int devnum = r10_bio->devs[n_copy].devnum;
r10_bio          1255 drivers/md/raid10.c 		r10_bio->devs[n_copy].repl_bio = mbio;
r10_bio          1257 drivers/md/raid10.c 		r10_bio->devs[n_copy].bio = mbio;
r10_bio          1259 drivers/md/raid10.c 	mbio->bi_iter.bi_sector	= (r10_bio->devs[n_copy].addr +
r10_bio          1260 drivers/md/raid10.c 				   choose_data_offset(r10_bio, rdev));
r10_bio          1268 drivers/md/raid10.c 	mbio->bi_private = r10_bio;
r10_bio          1273 drivers/md/raid10.c 				      r10_bio->sector);
r10_bio          1277 drivers/md/raid10.c 	atomic_inc(&r10_bio->remaining);
r10_bio          1297 drivers/md/raid10.c 				 struct r10bio *r10_bio)
r10_bio          1321 drivers/md/raid10.c 	sectors = r10_bio->sectors;
r10_bio          1357 drivers/md/raid10.c 	r10_bio->read_slot = -1; /* make sure repl_bio gets freed */
r10_bio          1358 drivers/md/raid10.c 	raid10_find_phys(conf, r10_bio);
r10_bio          1362 drivers/md/raid10.c 	max_sectors = r10_bio->sectors;
r10_bio          1365 drivers/md/raid10.c 		int d = r10_bio->devs[i].devnum;
r10_bio          1386 drivers/md/raid10.c 		r10_bio->devs[i].bio = NULL;
r10_bio          1387 drivers/md/raid10.c 		r10_bio->devs[i].repl_bio = NULL;
r10_bio          1390 drivers/md/raid10.c 			set_bit(R10BIO_Degraded, &r10_bio->state);
r10_bio          1395 drivers/md/raid10.c 			sector_t dev_sector = r10_bio->devs[i].addr;
r10_bio          1435 drivers/md/raid10.c 			r10_bio->devs[i].bio = bio;
r10_bio          1439 drivers/md/raid10.c 			r10_bio->devs[i].repl_bio = bio;
r10_bio          1451 drivers/md/raid10.c 			if (r10_bio->devs[j].bio) {
r10_bio          1452 drivers/md/raid10.c 				d = r10_bio->devs[j].devnum;
r10_bio          1455 drivers/md/raid10.c 			if (r10_bio->devs[j].repl_bio) {
r10_bio          1457 drivers/md/raid10.c 				d = r10_bio->devs[j].devnum;
r10_bio          1474 drivers/md/raid10.c 	if (max_sectors < r10_bio->sectors)
r10_bio          1475 drivers/md/raid10.c 		r10_bio->sectors = max_sectors;
r10_bio          1477 drivers/md/raid10.c 	if (r10_bio->sectors < bio_sectors(bio)) {
r10_bio          1478 drivers/md/raid10.c 		struct bio *split = bio_split(bio, r10_bio->sectors,
r10_bio          1485 drivers/md/raid10.c 		r10_bio->master_bio = bio;
r10_bio          1488 drivers/md/raid10.c 	atomic_set(&r10_bio->remaining, 1);
r10_bio          1489 drivers/md/raid10.c 	md_bitmap_startwrite(mddev->bitmap, r10_bio->sector, r10_bio->sectors, 0);
r10_bio          1492 drivers/md/raid10.c 		if (r10_bio->devs[i].bio)
r10_bio          1493 drivers/md/raid10.c 			raid10_write_one_disk(mddev, r10_bio, bio, false, i);
r10_bio          1494 drivers/md/raid10.c 		if (r10_bio->devs[i].repl_bio)
r10_bio          1495 drivers/md/raid10.c 			raid10_write_one_disk(mddev, r10_bio, bio, true, i);
r10_bio          1497 drivers/md/raid10.c 	one_write_done(r10_bio);
r10_bio          1503 drivers/md/raid10.c 	struct r10bio *r10_bio;
r10_bio          1505 drivers/md/raid10.c 	r10_bio = mempool_alloc(&conf->r10bio_pool, GFP_NOIO);
r10_bio          1507 drivers/md/raid10.c 	r10_bio->master_bio = bio;
r10_bio          1508 drivers/md/raid10.c 	r10_bio->sectors = sectors;
r10_bio          1510 drivers/md/raid10.c 	r10_bio->mddev = mddev;
r10_bio          1511 drivers/md/raid10.c 	r10_bio->sector = bio->bi_iter.bi_sector;
r10_bio          1512 drivers/md/raid10.c 	r10_bio->state = 0;
r10_bio          1513 drivers/md/raid10.c 	memset(r10_bio->devs, 0, sizeof(r10_bio->devs[0]) * conf->copies);
r10_bio          1516 drivers/md/raid10.c 		raid10_read_request(mddev, bio, r10_bio);
r10_bio          1518 drivers/md/raid10.c 		raid10_write_request(mddev, bio, r10_bio);
r10_bio          1883 drivers/md/raid10.c static void __end_sync_read(struct r10bio *r10_bio, struct bio *bio, int d)
r10_bio          1885 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio          1888 drivers/md/raid10.c 		set_bit(R10BIO_Uptodate, &r10_bio->state);
r10_bio          1893 drivers/md/raid10.c 		atomic_add(r10_bio->sectors,
r10_bio          1900 drivers/md/raid10.c 	if (test_bit(R10BIO_IsRecover, &r10_bio->state) ||
r10_bio          1901 drivers/md/raid10.c 	    atomic_dec_and_test(&r10_bio->remaining)) {
r10_bio          1905 drivers/md/raid10.c 		reschedule_retry(r10_bio);
r10_bio          1911 drivers/md/raid10.c 	struct r10bio *r10_bio = get_resync_r10bio(bio);
r10_bio          1912 drivers/md/raid10.c 	struct r10conf *conf = r10_bio->mddev->private;
r10_bio          1913 drivers/md/raid10.c 	int d = find_bio_disk(conf, r10_bio, bio, NULL, NULL);
r10_bio          1915 drivers/md/raid10.c 	__end_sync_read(r10_bio, bio, d);
r10_bio          1921 drivers/md/raid10.c 	struct r10bio *r10_bio = bio->bi_private;
r10_bio          1923 drivers/md/raid10.c 	__end_sync_read(r10_bio, bio, r10_bio->read_slot);
r10_bio          1926 drivers/md/raid10.c static void end_sync_request(struct r10bio *r10_bio)
r10_bio          1928 drivers/md/raid10.c 	struct mddev *mddev = r10_bio->mddev;
r10_bio          1930 drivers/md/raid10.c 	while (atomic_dec_and_test(&r10_bio->remaining)) {
r10_bio          1931 drivers/md/raid10.c 		if (r10_bio->master_bio == NULL) {
r10_bio          1933 drivers/md/raid10.c 			sector_t s = r10_bio->sectors;
r10_bio          1934 drivers/md/raid10.c 			if (test_bit(R10BIO_MadeGood, &r10_bio->state) ||
r10_bio          1935 drivers/md/raid10.c 			    test_bit(R10BIO_WriteError, &r10_bio->state))
r10_bio          1936 drivers/md/raid10.c 				reschedule_retry(r10_bio);
r10_bio          1938 drivers/md/raid10.c 				put_buf(r10_bio);
r10_bio          1942 drivers/md/raid10.c 			struct r10bio *r10_bio2 = (struct r10bio *)r10_bio->master_bio;
r10_bio          1943 drivers/md/raid10.c 			if (test_bit(R10BIO_MadeGood, &r10_bio->state) ||
r10_bio          1944 drivers/md/raid10.c 			    test_bit(R10BIO_WriteError, &r10_bio->state))
r10_bio          1945 drivers/md/raid10.c 				reschedule_retry(r10_bio);
r10_bio          1947 drivers/md/raid10.c 				put_buf(r10_bio);
r10_bio          1948 drivers/md/raid10.c 			r10_bio = r10_bio2;
r10_bio          1955 drivers/md/raid10.c 	struct r10bio *r10_bio = get_resync_r10bio(bio);
r10_bio          1956 drivers/md/raid10.c 	struct mddev *mddev = r10_bio->mddev;
r10_bio          1965 drivers/md/raid10.c 	d = find_bio_disk(conf, r10_bio, bio, &slot, &repl);
r10_bio          1979 drivers/md/raid10.c 			set_bit(R10BIO_WriteError, &r10_bio->state);
r10_bio          1982 drivers/md/raid10.c 			     r10_bio->devs[slot].addr,
r10_bio          1983 drivers/md/raid10.c 			     r10_bio->sectors,
r10_bio          1985 drivers/md/raid10.c 		set_bit(R10BIO_MadeGood, &r10_bio->state);
r10_bio          1989 drivers/md/raid10.c 	end_sync_request(r10_bio);
r10_bio          2008 drivers/md/raid10.c static void sync_request_write(struct mddev *mddev, struct r10bio *r10_bio)
r10_bio          2016 drivers/md/raid10.c 	atomic_set(&r10_bio->remaining, 1);
r10_bio          2020 drivers/md/raid10.c 		if (!r10_bio->devs[i].bio->bi_status)
r10_bio          2027 drivers/md/raid10.c 	fbio = r10_bio->devs[i].bio;
r10_bio          2028 drivers/md/raid10.c 	fbio->bi_iter.bi_size = r10_bio->sectors << 9;
r10_bio          2032 drivers/md/raid10.c 	vcnt = (r10_bio->sectors + (PAGE_SIZE >> 9) - 1) >> (PAGE_SHIFT - 9);
r10_bio          2039 drivers/md/raid10.c 		tbio = r10_bio->devs[i].bio;
r10_bio          2047 drivers/md/raid10.c 		d = r10_bio->devs[i].devnum;
r10_bio          2049 drivers/md/raid10.c 		if (!r10_bio->devs[i].bio->bi_status) {
r10_bio          2054 drivers/md/raid10.c 			int sectors = r10_bio->sectors;
r10_bio          2067 drivers/md/raid10.c 			atomic64_add(r10_bio->sectors, &mddev->resync_mismatches);
r10_bio          2086 drivers/md/raid10.c 		rp->raid_bio = r10_bio;
r10_bio          2088 drivers/md/raid10.c 		tbio->bi_iter.bi_sector = r10_bio->devs[i].addr;
r10_bio          2095 drivers/md/raid10.c 		atomic_inc(&r10_bio->remaining);
r10_bio          2111 drivers/md/raid10.c 		tbio = r10_bio->devs[i].repl_bio;
r10_bio          2114 drivers/md/raid10.c 		if (r10_bio->devs[i].bio->bi_end_io != end_sync_write
r10_bio          2115 drivers/md/raid10.c 		    && r10_bio->devs[i].bio != fbio)
r10_bio          2117 drivers/md/raid10.c 		d = r10_bio->devs[i].devnum;
r10_bio          2118 drivers/md/raid10.c 		atomic_inc(&r10_bio->remaining);
r10_bio          2125 drivers/md/raid10.c 	if (atomic_dec_and_test(&r10_bio->remaining)) {
r10_bio          2126 drivers/md/raid10.c 		md_done_sync(mddev, r10_bio->sectors, 1);
r10_bio          2127 drivers/md/raid10.c 		put_buf(r10_bio);
r10_bio          2141 drivers/md/raid10.c static void fix_recovery_read_error(struct r10bio *r10_bio)
r10_bio          2150 drivers/md/raid10.c 	struct mddev *mddev = r10_bio->mddev;
r10_bio          2152 drivers/md/raid10.c 	struct bio *bio = r10_bio->devs[0].bio;
r10_bio          2154 drivers/md/raid10.c 	int sectors = r10_bio->sectors;
r10_bio          2156 drivers/md/raid10.c 	int dr = r10_bio->devs[0].devnum;
r10_bio          2157 drivers/md/raid10.c 	int dw = r10_bio->devs[1].devnum;
r10_bio          2170 drivers/md/raid10.c 		addr = r10_bio->devs[0].addr + sect,
r10_bio          2178 drivers/md/raid10.c 			addr = r10_bio->devs[1].addr + sect;
r10_bio          2202 drivers/md/raid10.c 				addr = r10_bio->devs[1].addr + sect;
r10_bio          2224 drivers/md/raid10.c static void recovery_request_write(struct mddev *mddev, struct r10bio *r10_bio)
r10_bio          2230 drivers/md/raid10.c 	if (!test_bit(R10BIO_Uptodate, &r10_bio->state)) {
r10_bio          2231 drivers/md/raid10.c 		fix_recovery_read_error(r10_bio);
r10_bio          2232 drivers/md/raid10.c 		end_sync_request(r10_bio);
r10_bio          2240 drivers/md/raid10.c 	d = r10_bio->devs[1].devnum;
r10_bio          2241 drivers/md/raid10.c 	wbio = r10_bio->devs[1].bio;
r10_bio          2242 drivers/md/raid10.c 	wbio2 = r10_bio->devs[1].repl_bio;
r10_bio          2330 drivers/md/raid10.c static void fix_read_error(struct r10conf *conf, struct mddev *mddev, struct r10bio *r10_bio)
r10_bio          2333 drivers/md/raid10.c 	int sectors = r10_bio->sectors;
r10_bio          2336 drivers/md/raid10.c 	int d = r10_bio->devs[r10_bio->read_slot].devnum;
r10_bio          2360 drivers/md/raid10.c 		r10_bio->devs[r10_bio->read_slot].bio = IO_BLOCKED;
r10_bio          2366 drivers/md/raid10.c 		int sl = r10_bio->read_slot;
r10_bio          2378 drivers/md/raid10.c 			d = r10_bio->devs[sl].devnum;
r10_bio          2383 drivers/md/raid10.c 			    is_badblock(rdev, r10_bio->devs[sl].addr + sect, s,
r10_bio          2388 drivers/md/raid10.c 						       r10_bio->devs[sl].addr +
r10_bio          2401 drivers/md/raid10.c 		} while (!success && sl != r10_bio->read_slot);
r10_bio          2409 drivers/md/raid10.c 			int dn = r10_bio->devs[r10_bio->read_slot].devnum;
r10_bio          2414 drivers/md/raid10.c 				    r10_bio->devs[r10_bio->read_slot].addr
r10_bio          2418 drivers/md/raid10.c 				r10_bio->devs[r10_bio->read_slot].bio
r10_bio          2427 drivers/md/raid10.c 		while (sl != r10_bio->read_slot) {
r10_bio          2433 drivers/md/raid10.c 			d = r10_bio->devs[sl].devnum;
r10_bio          2443 drivers/md/raid10.c 					     r10_bio->devs[sl].addr +
r10_bio          2452 drivers/md/raid10.c 						  choose_data_offset(r10_bio,
r10_bio          2463 drivers/md/raid10.c 		while (sl != r10_bio->read_slot) {
r10_bio          2469 drivers/md/raid10.c 			d = r10_bio->devs[sl].devnum;
r10_bio          2479 drivers/md/raid10.c 					     r10_bio->devs[sl].addr +
r10_bio          2489 drivers/md/raid10.c 					       choose_data_offset(r10_bio, rdev)),
r10_bio          2500 drivers/md/raid10.c 					       choose_data_offset(r10_bio, rdev)),
r10_bio          2515 drivers/md/raid10.c static int narrow_write_error(struct r10bio *r10_bio, int i)
r10_bio          2517 drivers/md/raid10.c 	struct bio *bio = r10_bio->master_bio;
r10_bio          2518 drivers/md/raid10.c 	struct mddev *mddev = r10_bio->mddev;
r10_bio          2520 drivers/md/raid10.c 	struct md_rdev *rdev = conf->mirrors[r10_bio->devs[i].devnum].rdev;
r10_bio          2535 drivers/md/raid10.c 	int sect_to_write = r10_bio->sectors;
r10_bio          2543 drivers/md/raid10.c 	sector = r10_bio->sector;
r10_bio          2544 drivers/md/raid10.c 	sectors = ((r10_bio->sector + block_sectors)
r10_bio          2556 drivers/md/raid10.c 		wsector = r10_bio->devs[i].addr + (sector - r10_bio->sector);
r10_bio          2558 drivers/md/raid10.c 				   choose_data_offset(r10_bio, rdev);
r10_bio          2576 drivers/md/raid10.c static void handle_read_error(struct mddev *mddev, struct r10bio *r10_bio)
r10_bio          2578 drivers/md/raid10.c 	int slot = r10_bio->read_slot;
r10_bio          2581 drivers/md/raid10.c 	struct md_rdev *rdev = r10_bio->devs[slot].rdev;
r10_bio          2591 drivers/md/raid10.c 	bio = r10_bio->devs[slot].bio;
r10_bio          2593 drivers/md/raid10.c 	r10_bio->devs[slot].bio = NULL;
r10_bio          2596 drivers/md/raid10.c 		r10_bio->devs[slot].bio = IO_BLOCKED;
r10_bio          2599 drivers/md/raid10.c 		fix_read_error(conf, mddev, r10_bio);
r10_bio          2606 drivers/md/raid10.c 	r10_bio->state = 0;
r10_bio          2607 drivers/md/raid10.c 	raid10_read_request(mddev, r10_bio->master_bio, r10_bio);
r10_bio          2610 drivers/md/raid10.c static void handle_write_completed(struct r10conf *conf, struct r10bio *r10_bio)
r10_bio          2621 drivers/md/raid10.c 	if (test_bit(R10BIO_IsSync, &r10_bio->state) ||
r10_bio          2622 drivers/md/raid10.c 	    test_bit(R10BIO_IsRecover, &r10_bio->state)) {
r10_bio          2624 drivers/md/raid10.c 			int dev = r10_bio->devs[m].devnum;
r10_bio          2626 drivers/md/raid10.c 			if (r10_bio->devs[m].bio == NULL ||
r10_bio          2627 drivers/md/raid10.c 				r10_bio->devs[m].bio->bi_end_io == NULL)
r10_bio          2629 drivers/md/raid10.c 			if (!r10_bio->devs[m].bio->bi_status) {
r10_bio          2632 drivers/md/raid10.c 					r10_bio->devs[m].addr,
r10_bio          2633 drivers/md/raid10.c 					r10_bio->sectors, 0);
r10_bio          2637 drivers/md/raid10.c 					    r10_bio->devs[m].addr,
r10_bio          2638 drivers/md/raid10.c 					    r10_bio->sectors, 0))
r10_bio          2642 drivers/md/raid10.c 			if (r10_bio->devs[m].repl_bio == NULL ||
r10_bio          2643 drivers/md/raid10.c 				r10_bio->devs[m].repl_bio->bi_end_io == NULL)
r10_bio          2646 drivers/md/raid10.c 			if (!r10_bio->devs[m].repl_bio->bi_status) {
r10_bio          2649 drivers/md/raid10.c 					r10_bio->devs[m].addr,
r10_bio          2650 drivers/md/raid10.c 					r10_bio->sectors, 0);
r10_bio          2654 drivers/md/raid10.c 					    r10_bio->devs[m].addr,
r10_bio          2655 drivers/md/raid10.c 					    r10_bio->sectors, 0))
r10_bio          2659 drivers/md/raid10.c 		put_buf(r10_bio);
r10_bio          2663 drivers/md/raid10.c 			int dev = r10_bio->devs[m].devnum;
r10_bio          2664 drivers/md/raid10.c 			struct bio *bio = r10_bio->devs[m].bio;
r10_bio          2669 drivers/md/raid10.c 					r10_bio->devs[m].addr,
r10_bio          2670 drivers/md/raid10.c 					r10_bio->sectors, 0);
r10_bio          2674 drivers/md/raid10.c 				if (!narrow_write_error(r10_bio, m)) {
r10_bio          2677 drivers/md/raid10.c 						&r10_bio->state);
r10_bio          2681 drivers/md/raid10.c 			bio = r10_bio->devs[m].repl_bio;
r10_bio          2686 drivers/md/raid10.c 					r10_bio->devs[m].addr,
r10_bio          2687 drivers/md/raid10.c 					r10_bio->sectors, 0);
r10_bio          2693 drivers/md/raid10.c 			list_add(&r10_bio->retry_list, &conf->bio_end_io_list);
r10_bio          2704 drivers/md/raid10.c 				     &r10_bio->state))
r10_bio          2705 drivers/md/raid10.c 				close_write(r10_bio);
r10_bio          2706 drivers/md/raid10.c 			raid_end_bio_io(r10_bio);
r10_bio          2714 drivers/md/raid10.c 	struct r10bio *r10_bio;
r10_bio          2734 drivers/md/raid10.c 			r10_bio = list_first_entry(&tmp, struct r10bio,
r10_bio          2736 drivers/md/raid10.c 			list_del(&r10_bio->retry_list);
r10_bio          2738 drivers/md/raid10.c 				set_bit(R10BIO_Degraded, &r10_bio->state);
r10_bio          2741 drivers/md/raid10.c 				     &r10_bio->state))
r10_bio          2742 drivers/md/raid10.c 				close_write(r10_bio);
r10_bio          2743 drivers/md/raid10.c 			raid_end_bio_io(r10_bio);
r10_bio          2757 drivers/md/raid10.c 		r10_bio = list_entry(head->prev, struct r10bio, retry_list);
r10_bio          2762 drivers/md/raid10.c 		mddev = r10_bio->mddev;
r10_bio          2764 drivers/md/raid10.c 		if (test_bit(R10BIO_MadeGood, &r10_bio->state) ||
r10_bio          2765 drivers/md/raid10.c 		    test_bit(R10BIO_WriteError, &r10_bio->state))
r10_bio          2766 drivers/md/raid10.c 			handle_write_completed(conf, r10_bio);
r10_bio          2767 drivers/md/raid10.c 		else if (test_bit(R10BIO_IsReshape, &r10_bio->state))
r10_bio          2768 drivers/md/raid10.c 			reshape_request_write(mddev, r10_bio);
r10_bio          2769 drivers/md/raid10.c 		else if (test_bit(R10BIO_IsSync, &r10_bio->state))
r10_bio          2770 drivers/md/raid10.c 			sync_request_write(mddev, r10_bio);
r10_bio          2771 drivers/md/raid10.c 		else if (test_bit(R10BIO_IsRecover, &r10_bio->state))
r10_bio          2772 drivers/md/raid10.c 			recovery_request_write(mddev, r10_bio);
r10_bio          2773 drivers/md/raid10.c 		else if (test_bit(R10BIO_ReadError, &r10_bio->state))
r10_bio          2774 drivers/md/raid10.c 			handle_read_error(mddev, r10_bio);
r10_bio          2905 drivers/md/raid10.c 	struct r10bio *r10_bio;
r10_bio          3041 drivers/md/raid10.c 		r10_bio = NULL;
r10_bio          3073 drivers/md/raid10.c 			rb2 = r10_bio;
r10_bio          3107 drivers/md/raid10.c 			r10_bio = raid10_alloc_init_r10buf(conf);
r10_bio          3108 drivers/md/raid10.c 			r10_bio->state = 0;
r10_bio          3110 drivers/md/raid10.c 			atomic_set(&r10_bio->remaining, 0);
r10_bio          3112 drivers/md/raid10.c 			r10_bio->master_bio = (struct bio*)rb2;
r10_bio          3115 drivers/md/raid10.c 			r10_bio->mddev = mddev;
r10_bio          3116 drivers/md/raid10.c 			set_bit(R10BIO_IsRecover, &r10_bio->state);
r10_bio          3117 drivers/md/raid10.c 			r10_bio->sector = sect;
r10_bio          3119 drivers/md/raid10.c 			raid10_find_phys(conf, r10_bio);
r10_bio          3140 drivers/md/raid10.c 				int d = r10_bio->devs[j].devnum;
r10_bio          3151 drivers/md/raid10.c 				sector = r10_bio->devs[j].addr;
r10_bio          3165 drivers/md/raid10.c 				bio = r10_bio->devs[0].bio;
r10_bio          3172 drivers/md/raid10.c 				from_addr = r10_bio->devs[j].addr;
r10_bio          3180 drivers/md/raid10.c 					if (r10_bio->devs[k].devnum == i)
r10_bio          3183 drivers/md/raid10.c 				to_addr = r10_bio->devs[k].addr;
r10_bio          3184 drivers/md/raid10.c 				r10_bio->devs[0].devnum = d;
r10_bio          3185 drivers/md/raid10.c 				r10_bio->devs[0].addr = from_addr;
r10_bio          3186 drivers/md/raid10.c 				r10_bio->devs[1].devnum = i;
r10_bio          3187 drivers/md/raid10.c 				r10_bio->devs[1].addr = to_addr;
r10_bio          3190 drivers/md/raid10.c 					bio = r10_bio->devs[1].bio;
r10_bio          3198 drivers/md/raid10.c 					atomic_inc(&r10_bio->remaining);
r10_bio          3200 drivers/md/raid10.c 					r10_bio->devs[1].bio->bi_end_io = NULL;
r10_bio          3203 drivers/md/raid10.c 				bio = r10_bio->devs[1].repl_bio;
r10_bio          3219 drivers/md/raid10.c 				atomic_inc(&r10_bio->remaining);
r10_bio          3232 drivers/md/raid10.c 						if (r10_bio->devs[k].devnum == i)
r10_bio          3238 drivers/md/raid10.c 						    r10_bio->devs[k].addr,
r10_bio          3244 drivers/md/raid10.c 						    r10_bio->devs[k].addr,
r10_bio          3256 drivers/md/raid10.c 				put_buf(r10_bio);
r10_bio          3259 drivers/md/raid10.c 				r10_bio = rb2;
r10_bio          3268 drivers/md/raid10.c 			if (r10_bio->devs[0].bio->bi_opf & MD_FAILFAST) {
r10_bio          3275 drivers/md/raid10.c 					int d = r10_bio->devs[j].devnum;
r10_bio          3282 drivers/md/raid10.c 					r10_bio->devs[0].bio->bi_opf
r10_bio          3287 drivers/md/raid10.c 			while (r10_bio) {
r10_bio          3288 drivers/md/raid10.c 				struct r10bio *rb2 = r10_bio;
r10_bio          3289 drivers/md/raid10.c 				r10_bio = (struct r10bio*) rb2->master_bio;
r10_bio          3320 drivers/md/raid10.c 		r10_bio = raid10_alloc_init_r10buf(conf);
r10_bio          3321 drivers/md/raid10.c 		r10_bio->state = 0;
r10_bio          3323 drivers/md/raid10.c 		r10_bio->mddev = mddev;
r10_bio          3324 drivers/md/raid10.c 		atomic_set(&r10_bio->remaining, 0);
r10_bio          3328 drivers/md/raid10.c 		r10_bio->master_bio = NULL;
r10_bio          3329 drivers/md/raid10.c 		r10_bio->sector = sector_nr;
r10_bio          3330 drivers/md/raid10.c 		set_bit(R10BIO_IsSync, &r10_bio->state);
r10_bio          3331 drivers/md/raid10.c 		raid10_find_phys(conf, r10_bio);
r10_bio          3332 drivers/md/raid10.c 		r10_bio->sectors = (sector_nr | chunk_mask) - sector_nr + 1;
r10_bio          3335 drivers/md/raid10.c 			int d = r10_bio->devs[i].devnum;
r10_bio          3340 drivers/md/raid10.c 			if (r10_bio->devs[i].repl_bio)
r10_bio          3341 drivers/md/raid10.c 				r10_bio->devs[i].repl_bio->bi_end_io = NULL;
r10_bio          3343 drivers/md/raid10.c 			bio = r10_bio->devs[i].bio;
r10_bio          3351 drivers/md/raid10.c 			sector = r10_bio->devs[i].addr;
r10_bio          3365 drivers/md/raid10.c 			atomic_inc(&r10_bio->remaining);
r10_bio          3384 drivers/md/raid10.c 			bio = r10_bio->devs[i].repl_bio;
r10_bio          3387 drivers/md/raid10.c 			sector = r10_bio->devs[i].addr;
r10_bio          3402 drivers/md/raid10.c 				int d = r10_bio->devs[i].devnum;
r10_bio          3403 drivers/md/raid10.c 				if (r10_bio->devs[i].bio->bi_end_io)
r10_bio          3406 drivers/md/raid10.c 				if (r10_bio->devs[i].repl_bio &&
r10_bio          3407 drivers/md/raid10.c 				    r10_bio->devs[i].repl_bio->bi_end_io)
r10_bio          3412 drivers/md/raid10.c 			put_buf(r10_bio);
r10_bio          3440 drivers/md/raid10.c 	r10_bio->sectors = nr_sectors;
r10_bio          3493 drivers/md/raid10.c 		r10_bio = get_resync_r10bio(bio);
r10_bio          3494 drivers/md/raid10.c 		r10_bio->sectors = nr_sectors;
r10_bio          4434 drivers/md/raid10.c 	struct r10bio *r10_bio;
r10_bio          4539 drivers/md/raid10.c 	r10_bio = raid10_alloc_init_r10buf(conf);
r10_bio          4540 drivers/md/raid10.c 	r10_bio->state = 0;
r10_bio          4542 drivers/md/raid10.c 	atomic_set(&r10_bio->remaining, 0);
r10_bio          4543 drivers/md/raid10.c 	r10_bio->mddev = mddev;
r10_bio          4544 drivers/md/raid10.c 	r10_bio->sector = sector_nr;
r10_bio          4545 drivers/md/raid10.c 	set_bit(R10BIO_IsReshape, &r10_bio->state);
r10_bio          4546 drivers/md/raid10.c 	r10_bio->sectors = last - sector_nr + 1;
r10_bio          4547 drivers/md/raid10.c 	rdev = read_balance(conf, r10_bio, &max_sectors);
r10_bio          4548 drivers/md/raid10.c 	BUG_ON(!test_bit(R10BIO_Previous, &r10_bio->state));
r10_bio          4555 drivers/md/raid10.c 		mempool_free(r10_bio, &conf->r10buf_pool);
r10_bio          4563 drivers/md/raid10.c 	read_bio->bi_iter.bi_sector = (r10_bio->devs[r10_bio->read_slot].addr
r10_bio          4565 drivers/md/raid10.c 	read_bio->bi_private = r10_bio;
r10_bio          4572 drivers/md/raid10.c 	r10_bio->master_bio = read_bio;
r10_bio          4573 drivers/md/raid10.c 	r10_bio->read_slot = r10_bio->devs[r10_bio->read_slot].devnum;
r10_bio          4602 drivers/md/raid10.c 	__raid10_find_phys(&conf->geo, r10_bio);
r10_bio          4610 drivers/md/raid10.c 		int d = r10_bio->devs[s/2].devnum;
r10_bio          4614 drivers/md/raid10.c 			b = r10_bio->devs[s/2].repl_bio;
r10_bio          4617 drivers/md/raid10.c 			b = r10_bio->devs[s/2].bio;
r10_bio          4623 drivers/md/raid10.c 		b->bi_iter.bi_sector = r10_bio->devs[s/2].addr +
r10_bio          4634 drivers/md/raid10.c 	pages = get_resync_pages(r10_bio->devs[0].bio)->pages;
r10_bio          4651 drivers/md/raid10.c 	r10_bio->sectors = nr_sectors;
r10_bio          4654 drivers/md/raid10.c 	md_sync_acct_bio(read_bio, r10_bio->sectors);
r10_bio          4655 drivers/md/raid10.c 	atomic_inc(&r10_bio->remaining);
r10_bio          4675 drivers/md/raid10.c static void end_reshape_request(struct r10bio *r10_bio);
r10_bio          4677 drivers/md/raid10.c 				     struct r10bio *r10_bio);
r10_bio          4678 drivers/md/raid10.c static void reshape_request_write(struct mddev *mddev, struct r10bio *r10_bio)
r10_bio          4688 drivers/md/raid10.c 	if (!test_bit(R10BIO_Uptodate, &r10_bio->state))
r10_bio          4689 drivers/md/raid10.c 		if (handle_reshape_read_error(mddev, r10_bio) < 0) {
r10_bio          4691 drivers/md/raid10.c 			md_done_sync(mddev, r10_bio->sectors, 0);
r10_bio          4698 drivers/md/raid10.c 	atomic_set(&r10_bio->remaining, 1);
r10_bio          4701 drivers/md/raid10.c 		int d = r10_bio->devs[s/2].devnum;
r10_bio          4706 drivers/md/raid10.c 			b = r10_bio->devs[s/2].repl_bio;
r10_bio          4709 drivers/md/raid10.c 			b = r10_bio->devs[s/2].bio;
r10_bio          4717 drivers/md/raid10.c 		md_sync_acct_bio(b, r10_bio->sectors);
r10_bio          4718 drivers/md/raid10.c 		atomic_inc(&r10_bio->remaining);
r10_bio          4722 drivers/md/raid10.c 	end_reshape_request(r10_bio);
r10_bio          4765 drivers/md/raid10.c 				     struct r10bio *r10_bio)
r10_bio          4768 drivers/md/raid10.c 	int sectors = r10_bio->sectors;
r10_bio          4782 drivers/md/raid10.c 	pages = get_resync_pages(r10_bio->devs[0].bio)->pages;
r10_bio          4784 drivers/md/raid10.c 	r10b->sector = r10_bio->sector;
r10_bio          4841 drivers/md/raid10.c 	struct r10bio *r10_bio = get_resync_r10bio(bio);
r10_bio          4842 drivers/md/raid10.c 	struct mddev *mddev = r10_bio->mddev;
r10_bio          4849 drivers/md/raid10.c 	d = find_bio_disk(conf, r10_bio, bio, &slot, &repl);
r10_bio          4863 drivers/md/raid10.c 	end_reshape_request(r10_bio);
r10_bio          4866 drivers/md/raid10.c static void end_reshape_request(struct r10bio *r10_bio)
r10_bio          4868 drivers/md/raid10.c 	if (!atomic_dec_and_test(&r10_bio->remaining))
r10_bio          4870 drivers/md/raid10.c 	md_done_sync(r10_bio->mddev, r10_bio->sectors, 1);
r10_bio          4871 drivers/md/raid10.c 	bio_put(r10_bio->master_bio);
r10_bio          4872 drivers/md/raid10.c 	put_buf(r10_bio);