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);