r1_bio 132 drivers/md/raid1.c struct r1bio *r1_bio; r1_bio 138 drivers/md/raid1.c r1_bio = r1bio_pool_alloc(gfp_flags, pi); r1_bio 139 drivers/md/raid1.c if (!r1_bio) r1_bio 154 drivers/md/raid1.c r1_bio->bios[j] = bio; r1_bio 169 drivers/md/raid1.c bio = r1_bio->bios[j]; r1_bio 179 drivers/md/raid1.c rp->raid_bio = r1_bio; r1_bio 183 drivers/md/raid1.c r1_bio->master_bio = NULL; r1_bio 185 drivers/md/raid1.c return r1_bio; r1_bio 193 drivers/md/raid1.c bio_put(r1_bio->bios[j]); r1_bio 197 drivers/md/raid1.c rbio_pool_free(r1_bio, data); r1_bio 220 drivers/md/raid1.c static void put_all_bios(struct r1conf *conf, struct r1bio *r1_bio) r1_bio 225 drivers/md/raid1.c struct bio **bio = r1_bio->bios + i; r1_bio 232 drivers/md/raid1.c static void free_r1bio(struct r1bio *r1_bio) r1_bio 234 drivers/md/raid1.c struct r1conf *conf = r1_bio->mddev->private; r1_bio 236 drivers/md/raid1.c put_all_bios(conf, r1_bio); r1_bio 237 drivers/md/raid1.c mempool_free(r1_bio, &conf->r1bio_pool); r1_bio 240 drivers/md/raid1.c static void put_buf(struct r1bio *r1_bio) r1_bio 242 drivers/md/raid1.c struct r1conf *conf = r1_bio->mddev->private; r1_bio 243 drivers/md/raid1.c sector_t sect = r1_bio->sector; r1_bio 247 drivers/md/raid1.c struct bio *bio = r1_bio->bios[i]; r1_bio 249 drivers/md/raid1.c rdev_dec_pending(conf->mirrors[i].rdev, r1_bio->mddev); r1_bio 252 drivers/md/raid1.c mempool_free(r1_bio, &conf->r1buf_pool); r1_bio 257 drivers/md/raid1.c static void reschedule_retry(struct r1bio *r1_bio) r1_bio 260 drivers/md/raid1.c struct mddev *mddev = r1_bio->mddev; r1_bio 264 drivers/md/raid1.c idx = sector_to_idx(r1_bio->sector); r1_bio 266 drivers/md/raid1.c list_add(&r1_bio->retry_list, &conf->retry_list); r1_bio 279 drivers/md/raid1.c static void call_bio_endio(struct r1bio *r1_bio) r1_bio 281 drivers/md/raid1.c struct bio *bio = r1_bio->master_bio; r1_bio 282 drivers/md/raid1.c struct r1conf *conf = r1_bio->mddev->private; r1_bio 284 drivers/md/raid1.c if (!test_bit(R1BIO_Uptodate, &r1_bio->state)) r1_bio 292 drivers/md/raid1.c allow_barrier(conf, r1_bio->sector); r1_bio 295 drivers/md/raid1.c static void raid_end_bio_io(struct r1bio *r1_bio) r1_bio 297 drivers/md/raid1.c struct bio *bio = r1_bio->master_bio; r1_bio 300 drivers/md/raid1.c if (!test_and_set_bit(R1BIO_Returned, &r1_bio->state)) { r1_bio 306 drivers/md/raid1.c call_bio_endio(r1_bio); r1_bio 308 drivers/md/raid1.c free_r1bio(r1_bio); r1_bio 314 drivers/md/raid1.c static inline void update_head_pos(int disk, struct r1bio *r1_bio) r1_bio 316 drivers/md/raid1.c struct r1conf *conf = r1_bio->mddev->private; r1_bio 319 drivers/md/raid1.c r1_bio->sector + (r1_bio->sectors); r1_bio 325 drivers/md/raid1.c static int find_bio_disk(struct r1bio *r1_bio, struct bio *bio) r1_bio 328 drivers/md/raid1.c struct r1conf *conf = r1_bio->mddev->private; r1_bio 332 drivers/md/raid1.c if (r1_bio->bios[mirror] == bio) r1_bio 336 drivers/md/raid1.c update_head_pos(mirror, r1_bio); r1_bio 344 drivers/md/raid1.c struct r1bio *r1_bio = bio->bi_private; r1_bio 345 drivers/md/raid1.c struct r1conf *conf = r1_bio->mddev->private; r1_bio 346 drivers/md/raid1.c struct md_rdev *rdev = conf->mirrors[r1_bio->read_disk].rdev; r1_bio 351 drivers/md/raid1.c update_head_pos(r1_bio->read_disk, r1_bio); r1_bio 354 drivers/md/raid1.c set_bit(R1BIO_Uptodate, &r1_bio->state); r1_bio 356 drivers/md/raid1.c test_bit(R1BIO_FailFast, &r1_bio->state)) r1_bio 367 drivers/md/raid1.c if (r1_bio->mddev->degraded == conf->raid_disks || r1_bio 368 drivers/md/raid1.c (r1_bio->mddev->degraded == conf->raid_disks-1 && r1_bio 375 drivers/md/raid1.c raid_end_bio_io(r1_bio); r1_bio 385 drivers/md/raid1.c (unsigned long long)r1_bio->sector); r1_bio 386 drivers/md/raid1.c set_bit(R1BIO_ReadError, &r1_bio->state); r1_bio 387 drivers/md/raid1.c reschedule_retry(r1_bio); r1_bio 392 drivers/md/raid1.c static void close_write(struct r1bio *r1_bio) r1_bio 395 drivers/md/raid1.c if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { r1_bio 396 drivers/md/raid1.c bio_free_pages(r1_bio->behind_master_bio); r1_bio 397 drivers/md/raid1.c bio_put(r1_bio->behind_master_bio); r1_bio 398 drivers/md/raid1.c r1_bio->behind_master_bio = NULL; r1_bio 401 drivers/md/raid1.c md_bitmap_endwrite(r1_bio->mddev->bitmap, r1_bio->sector, r1_bio 402 drivers/md/raid1.c r1_bio->sectors, r1_bio 403 drivers/md/raid1.c !test_bit(R1BIO_Degraded, &r1_bio->state), r1_bio 404 drivers/md/raid1.c test_bit(R1BIO_BehindIO, &r1_bio->state)); r1_bio 405 drivers/md/raid1.c md_write_end(r1_bio->mddev); r1_bio 408 drivers/md/raid1.c static void r1_bio_write_done(struct r1bio *r1_bio) r1_bio 410 drivers/md/raid1.c if (!atomic_dec_and_test(&r1_bio->remaining)) r1_bio 413 drivers/md/raid1.c if (test_bit(R1BIO_WriteError, &r1_bio->state)) r1_bio 414 drivers/md/raid1.c reschedule_retry(r1_bio); r1_bio 416 drivers/md/raid1.c close_write(r1_bio); r1_bio 417 drivers/md/raid1.c if (test_bit(R1BIO_MadeGood, &r1_bio->state)) r1_bio 418 drivers/md/raid1.c reschedule_retry(r1_bio); r1_bio 420 drivers/md/raid1.c raid_end_bio_io(r1_bio); r1_bio 426 drivers/md/raid1.c struct r1bio *r1_bio = bio->bi_private; r1_bio 427 drivers/md/raid1.c int behind = test_bit(R1BIO_BehindIO, &r1_bio->state); r1_bio 428 drivers/md/raid1.c struct r1conf *conf = r1_bio->mddev->private; r1_bio 430 drivers/md/raid1.c int mirror = find_bio_disk(r1_bio, bio); r1_bio 449 drivers/md/raid1.c md_error(r1_bio->mddev, rdev); r1_bio 459 drivers/md/raid1.c set_bit(R1BIO_WriteError, &r1_bio->state); r1_bio 462 drivers/md/raid1.c r1_bio->bios[mirror] = NULL; r1_bio 479 drivers/md/raid1.c r1_bio->bios[mirror] = NULL; r1_bio 491 drivers/md/raid1.c set_bit(R1BIO_Uptodate, &r1_bio->state); r1_bio 494 drivers/md/raid1.c if (is_badblock(rdev, r1_bio->sector, r1_bio->sectors, r1_bio 496 drivers/md/raid1.c r1_bio->bios[mirror] = IO_MADE_GOOD; r1_bio 497 drivers/md/raid1.c set_bit(R1BIO_MadeGood, &r1_bio->state); r1_bio 503 drivers/md/raid1.c sector_t lo = r1_bio->sector; r1_bio 504 drivers/md/raid1.c sector_t hi = r1_bio->sector + r1_bio->sectors; r1_bio 509 drivers/md/raid1.c atomic_dec(&r1_bio->behind_remaining); r1_bio 518 drivers/md/raid1.c if (atomic_read(&r1_bio->behind_remaining) >= (atomic_read(&r1_bio->remaining)-1) && r1_bio 519 drivers/md/raid1.c test_bit(R1BIO_Uptodate, &r1_bio->state)) { r1_bio 521 drivers/md/raid1.c if (!test_and_set_bit(R1BIO_Returned, &r1_bio->state)) { r1_bio 522 drivers/md/raid1.c struct bio *mbio = r1_bio->master_bio; r1_bio 527 drivers/md/raid1.c call_bio_endio(r1_bio); r1_bio 531 drivers/md/raid1.c if (r1_bio->bios[mirror] == NULL) r1_bio 538 drivers/md/raid1.c r1_bio_write_done(r1_bio); r1_bio 577 drivers/md/raid1.c static int read_balance(struct r1conf *conf, struct r1bio *r1_bio, int *max_sectors) r1_bio 579 drivers/md/raid1.c const sector_t this_sector = r1_bio->sector; r1_bio 598 drivers/md/raid1.c sectors = r1_bio->sectors; r1_bio 607 drivers/md/raid1.c clear_bit(R1BIO_FailFast, &r1_bio->state); r1_bio 625 drivers/md/raid1.c if (r1_bio->bios[disk] == IO_BLOCKED r1_bio 686 drivers/md/raid1.c set_bit(R1BIO_FailFast, &r1_bio->state); r1_bio 1111 drivers/md/raid1.c static void alloc_behind_master_bio(struct r1bio *r1_bio, r1_bio 1119 drivers/md/raid1.c behind_bio = bio_alloc_mddev(GFP_NOIO, vcnt, r1_bio->mddev); r1_bio 1147 drivers/md/raid1.c r1_bio->behind_master_bio = behind_bio; r1_bio 1148 drivers/md/raid1.c set_bit(R1BIO_BehindIO, &r1_bio->state); r1_bio 1190 drivers/md/raid1.c static void init_r1bio(struct r1bio *r1_bio, struct mddev *mddev, struct bio *bio) r1_bio 1192 drivers/md/raid1.c r1_bio->master_bio = bio; r1_bio 1193 drivers/md/raid1.c r1_bio->sectors = bio_sectors(bio); r1_bio 1194 drivers/md/raid1.c r1_bio->state = 0; r1_bio 1195 drivers/md/raid1.c r1_bio->mddev = mddev; r1_bio 1196 drivers/md/raid1.c r1_bio->sector = bio->bi_iter.bi_sector; r1_bio 1203 drivers/md/raid1.c struct r1bio *r1_bio; r1_bio 1205 drivers/md/raid1.c r1_bio = mempool_alloc(&conf->r1bio_pool, GFP_NOIO); r1_bio 1207 drivers/md/raid1.c memset(r1_bio->bios, 0, conf->raid_disks * sizeof(r1_bio->bios[0])); r1_bio 1208 drivers/md/raid1.c init_r1bio(r1_bio, mddev, bio); r1_bio 1209 drivers/md/raid1.c return r1_bio; r1_bio 1213 drivers/md/raid1.c int max_read_sectors, struct r1bio *r1_bio) r1_bio 1223 drivers/md/raid1.c bool print_msg = !!r1_bio; r1_bio 1231 drivers/md/raid1.c gfp_t gfp = r1_bio ? (GFP_NOIO | __GFP_HIGH) : GFP_NOIO; r1_bio 1237 drivers/md/raid1.c rdev = rcu_dereference(conf->mirrors[r1_bio->read_disk].rdev); r1_bio 1251 drivers/md/raid1.c if (!r1_bio) r1_bio 1252 drivers/md/raid1.c r1_bio = alloc_r1bio(mddev, bio); r1_bio 1254 drivers/md/raid1.c init_r1bio(r1_bio, mddev, bio); r1_bio 1255 drivers/md/raid1.c r1_bio->sectors = max_read_sectors; r1_bio 1261 drivers/md/raid1.c rdisk = read_balance(conf, r1_bio, &max_sectors); r1_bio 1269 drivers/md/raid1.c (unsigned long long)r1_bio->sector); r1_bio 1271 drivers/md/raid1.c raid_end_bio_io(r1_bio); r1_bio 1279 drivers/md/raid1.c (unsigned long long)r1_bio->sector, r1_bio 1299 drivers/md/raid1.c r1_bio->master_bio = bio; r1_bio 1300 drivers/md/raid1.c r1_bio->sectors = max_sectors; r1_bio 1303 drivers/md/raid1.c r1_bio->read_disk = rdisk; r1_bio 1307 drivers/md/raid1.c r1_bio->bios[rdisk] = read_bio; r1_bio 1309 drivers/md/raid1.c read_bio->bi_iter.bi_sector = r1_bio->sector + r1_bio 1315 drivers/md/raid1.c test_bit(R1BIO_FailFast, &r1_bio->state)) r1_bio 1317 drivers/md/raid1.c read_bio->bi_private = r1_bio; r1_bio 1321 drivers/md/raid1.c disk_devt(mddev->gendisk), r1_bio->sector); r1_bio 1330 drivers/md/raid1.c struct r1bio *r1_bio; r1_bio 1364 drivers/md/raid1.c r1_bio = alloc_r1bio(mddev, bio); r1_bio 1365 drivers/md/raid1.c r1_bio->sectors = max_write_sectors; r1_bio 1388 drivers/md/raid1.c max_sectors = r1_bio->sectors; r1_bio 1396 drivers/md/raid1.c r1_bio->bios[i] = NULL; r1_bio 1399 drivers/md/raid1.c set_bit(R1BIO_Degraded, &r1_bio->state); r1_bio 1409 drivers/md/raid1.c is_bad = is_badblock(rdev, r1_bio->sector, max_sectors, r1_bio 1418 drivers/md/raid1.c if (is_bad && first_bad <= r1_bio->sector) { r1_bio 1420 drivers/md/raid1.c bad_sectors -= (r1_bio->sector - first_bad); r1_bio 1440 drivers/md/raid1.c int good_sectors = first_bad - r1_bio->sector; r1_bio 1445 drivers/md/raid1.c r1_bio->bios[i] = bio; r1_bio 1454 drivers/md/raid1.c if (r1_bio->bios[j]) r1_bio 1456 drivers/md/raid1.c r1_bio->state = 0; r1_bio 1470 drivers/md/raid1.c r1_bio->master_bio = bio; r1_bio 1471 drivers/md/raid1.c r1_bio->sectors = max_sectors; r1_bio 1474 drivers/md/raid1.c atomic_set(&r1_bio->remaining, 1); r1_bio 1475 drivers/md/raid1.c atomic_set(&r1_bio->behind_remaining, 0); r1_bio 1481 drivers/md/raid1.c if (!r1_bio->bios[i]) r1_bio 1493 drivers/md/raid1.c alloc_behind_master_bio(r1_bio, bio); r1_bio 1496 drivers/md/raid1.c md_bitmap_startwrite(bitmap, r1_bio->sector, r1_bio->sectors, r1_bio 1497 drivers/md/raid1.c test_bit(R1BIO_BehindIO, &r1_bio->state)); r1_bio 1501 drivers/md/raid1.c if (r1_bio->behind_master_bio) r1_bio 1502 drivers/md/raid1.c mbio = bio_clone_fast(r1_bio->behind_master_bio, r1_bio 1507 drivers/md/raid1.c if (r1_bio->behind_master_bio) { r1_bio 1511 drivers/md/raid1.c sector_t lo = r1_bio->sector; r1_bio 1512 drivers/md/raid1.c sector_t hi = r1_bio->sector + r1_bio->sectors; r1_bio 1518 drivers/md/raid1.c atomic_inc(&r1_bio->behind_remaining); r1_bio 1521 drivers/md/raid1.c r1_bio->bios[i] = mbio; r1_bio 1523 drivers/md/raid1.c mbio->bi_iter.bi_sector = (r1_bio->sector + r1_bio 1532 drivers/md/raid1.c mbio->bi_private = r1_bio; r1_bio 1534 drivers/md/raid1.c atomic_inc(&r1_bio->remaining); r1_bio 1539 drivers/md/raid1.c r1_bio->sector); r1_bio 1560 drivers/md/raid1.c r1_bio_write_done(r1_bio); r1_bio 1878 drivers/md/raid1.c struct r1bio *r1_bio = get_resync_r1bio(bio); r1_bio 1880 drivers/md/raid1.c update_head_pos(r1_bio->read_disk, r1_bio); r1_bio 1888 drivers/md/raid1.c set_bit(R1BIO_Uptodate, &r1_bio->state); r1_bio 1890 drivers/md/raid1.c if (atomic_dec_and_test(&r1_bio->remaining)) r1_bio 1891 drivers/md/raid1.c reschedule_retry(r1_bio); r1_bio 1894 drivers/md/raid1.c static void abort_sync_write(struct mddev *mddev, struct r1bio *r1_bio) r1_bio 1897 drivers/md/raid1.c sector_t s = r1_bio->sector; r1_bio 1898 drivers/md/raid1.c long sectors_to_go = r1_bio->sectors; r1_bio 1908 drivers/md/raid1.c static void put_sync_write_buf(struct r1bio *r1_bio, int uptodate) r1_bio 1910 drivers/md/raid1.c if (atomic_dec_and_test(&r1_bio->remaining)) { r1_bio 1911 drivers/md/raid1.c struct mddev *mddev = r1_bio->mddev; r1_bio 1912 drivers/md/raid1.c int s = r1_bio->sectors; r1_bio 1914 drivers/md/raid1.c if (test_bit(R1BIO_MadeGood, &r1_bio->state) || r1_bio 1915 drivers/md/raid1.c test_bit(R1BIO_WriteError, &r1_bio->state)) r1_bio 1916 drivers/md/raid1.c reschedule_retry(r1_bio); r1_bio 1918 drivers/md/raid1.c put_buf(r1_bio); r1_bio 1927 drivers/md/raid1.c struct r1bio *r1_bio = get_resync_r1bio(bio); r1_bio 1928 drivers/md/raid1.c struct mddev *mddev = r1_bio->mddev; r1_bio 1932 drivers/md/raid1.c struct md_rdev *rdev = conf->mirrors[find_bio_disk(r1_bio, bio)].rdev; r1_bio 1935 drivers/md/raid1.c abort_sync_write(mddev, r1_bio); r1_bio 1940 drivers/md/raid1.c set_bit(R1BIO_WriteError, &r1_bio->state); r1_bio 1941 drivers/md/raid1.c } else if (is_badblock(rdev, r1_bio->sector, r1_bio->sectors, r1_bio 1943 drivers/md/raid1.c !is_badblock(conf->mirrors[r1_bio->read_disk].rdev, r1_bio 1944 drivers/md/raid1.c r1_bio->sector, r1_bio 1945 drivers/md/raid1.c r1_bio->sectors, r1_bio 1948 drivers/md/raid1.c set_bit(R1BIO_MadeGood, &r1_bio->state); r1_bio 1950 drivers/md/raid1.c put_sync_write_buf(r1_bio, uptodate); r1_bio 1972 drivers/md/raid1.c static int fix_sync_read_error(struct r1bio *r1_bio) r1_bio 1985 drivers/md/raid1.c struct mddev *mddev = r1_bio->mddev; r1_bio 1987 drivers/md/raid1.c struct bio *bio = r1_bio->bios[r1_bio->read_disk]; r1_bio 1989 drivers/md/raid1.c sector_t sect = r1_bio->sector; r1_bio 1990 drivers/md/raid1.c int sectors = r1_bio->sectors; r1_bio 1994 drivers/md/raid1.c rdev = conf->mirrors[r1_bio->read_disk].rdev; r1_bio 2008 drivers/md/raid1.c int d = r1_bio->read_disk; r1_bio 2015 drivers/md/raid1.c if (r1_bio->bios[d]->bi_end_io == end_sync_read) { r1_bio 2031 drivers/md/raid1.c } while (!success && d != r1_bio->read_disk); r1_bio 2043 drivers/md/raid1.c (unsigned long long)r1_bio->sector); r1_bio 2055 drivers/md/raid1.c md_done_sync(mddev, r1_bio->sectors, 0); r1_bio 2056 drivers/md/raid1.c put_buf(r1_bio); r1_bio 2068 drivers/md/raid1.c while (d != r1_bio->read_disk) { r1_bio 2072 drivers/md/raid1.c if (r1_bio->bios[d]->bi_end_io != end_sync_read) r1_bio 2078 drivers/md/raid1.c r1_bio->bios[d]->bi_end_io = NULL; r1_bio 2083 drivers/md/raid1.c while (d != r1_bio->read_disk) { r1_bio 2087 drivers/md/raid1.c if (r1_bio->bios[d]->bi_end_io != end_sync_read) r1_bio 2099 drivers/md/raid1.c set_bit(R1BIO_Uptodate, &r1_bio->state); r1_bio 2104 drivers/md/raid1.c static void process_checks(struct r1bio *r1_bio) r1_bio 2113 drivers/md/raid1.c struct mddev *mddev = r1_bio->mddev; r1_bio 2120 drivers/md/raid1.c vcnt = (r1_bio->sectors + PAGE_SIZE / 512 - 1) >> (PAGE_SHIFT - 9); r1_bio 2123 drivers/md/raid1.c struct bio *b = r1_bio->bios[i]; r1_bio 2131 drivers/md/raid1.c b->bi_iter.bi_sector = r1_bio->sector + r1_bio 2135 drivers/md/raid1.c rp->raid_bio = r1_bio; r1_bio 2139 drivers/md/raid1.c md_bio_reset_resync_pages(b, rp, r1_bio->sectors << 9); r1_bio 2142 drivers/md/raid1.c if (r1_bio->bios[primary]->bi_end_io == end_sync_read && r1_bio 2143 drivers/md/raid1.c !r1_bio->bios[primary]->bi_status) { r1_bio 2144 drivers/md/raid1.c r1_bio->bios[primary]->bi_end_io = NULL; r1_bio 2148 drivers/md/raid1.c r1_bio->read_disk = primary; r1_bio 2151 drivers/md/raid1.c struct bio *pbio = r1_bio->bios[primary]; r1_bio 2152 drivers/md/raid1.c struct bio *sbio = r1_bio->bios[i]; r1_bio 2178 drivers/md/raid1.c atomic64_add(r1_bio->sectors, &mddev->resync_mismatches); r1_bio 2191 drivers/md/raid1.c static void sync_request_write(struct mddev *mddev, struct r1bio *r1_bio) r1_bio 2198 drivers/md/raid1.c if (!test_bit(R1BIO_Uptodate, &r1_bio->state)) r1_bio 2200 drivers/md/raid1.c if (!fix_sync_read_error(r1_bio)) r1_bio 2204 drivers/md/raid1.c process_checks(r1_bio); r1_bio 2209 drivers/md/raid1.c atomic_set(&r1_bio->remaining, 1); r1_bio 2211 drivers/md/raid1.c wbio = r1_bio->bios[i]; r1_bio 2214 drivers/md/raid1.c (i == r1_bio->read_disk || r1_bio 2218 drivers/md/raid1.c abort_sync_write(mddev, r1_bio); r1_bio 2227 drivers/md/raid1.c atomic_inc(&r1_bio->remaining); r1_bio 2233 drivers/md/raid1.c put_sync_write_buf(r1_bio, 1); r1_bio 2340 drivers/md/raid1.c static int narrow_write_error(struct r1bio *r1_bio, int i) r1_bio 2342 drivers/md/raid1.c struct mddev *mddev = r1_bio->mddev; r1_bio 2360 drivers/md/raid1.c int sect_to_write = r1_bio->sectors; r1_bio 2368 drivers/md/raid1.c sector = r1_bio->sector; r1_bio 2379 drivers/md/raid1.c if (test_bit(R1BIO_BehindIO, &r1_bio->state)) { r1_bio 2380 drivers/md/raid1.c wbio = bio_clone_fast(r1_bio->behind_master_bio, r1_bio 2384 drivers/md/raid1.c wbio = bio_clone_fast(r1_bio->master_bio, GFP_NOIO, r1_bio 2389 drivers/md/raid1.c wbio->bi_iter.bi_sector = r1_bio->sector; r1_bio 2390 drivers/md/raid1.c wbio->bi_iter.bi_size = r1_bio->sectors << 9; r1_bio 2392 drivers/md/raid1.c bio_trim(wbio, sector - r1_bio->sector, sectors); r1_bio 2410 drivers/md/raid1.c static void handle_sync_write_finished(struct r1conf *conf, struct r1bio *r1_bio) r1_bio 2413 drivers/md/raid1.c int s = r1_bio->sectors; r1_bio 2416 drivers/md/raid1.c struct bio *bio = r1_bio->bios[m]; r1_bio 2420 drivers/md/raid1.c test_bit(R1BIO_MadeGood, &r1_bio->state)) { r1_bio 2421 drivers/md/raid1.c rdev_clear_badblocks(rdev, r1_bio->sector, s, 0); r1_bio 2424 drivers/md/raid1.c test_bit(R1BIO_WriteError, &r1_bio->state)) { r1_bio 2425 drivers/md/raid1.c if (!rdev_set_badblocks(rdev, r1_bio->sector, s, 0)) r1_bio 2429 drivers/md/raid1.c put_buf(r1_bio); r1_bio 2433 drivers/md/raid1.c static void handle_write_finished(struct r1conf *conf, struct r1bio *r1_bio) r1_bio 2439 drivers/md/raid1.c if (r1_bio->bios[m] == IO_MADE_GOOD) { r1_bio 2442 drivers/md/raid1.c r1_bio->sector, r1_bio 2443 drivers/md/raid1.c r1_bio->sectors, 0); r1_bio 2445 drivers/md/raid1.c } else if (r1_bio->bios[m] != NULL) { r1_bio 2451 drivers/md/raid1.c if (!narrow_write_error(r1_bio, m)) { r1_bio 2455 drivers/md/raid1.c set_bit(R1BIO_Degraded, &r1_bio->state); r1_bio 2462 drivers/md/raid1.c list_add(&r1_bio->retry_list, &conf->bio_end_io_list); r1_bio 2463 drivers/md/raid1.c idx = sector_to_idx(r1_bio->sector); r1_bio 2473 drivers/md/raid1.c if (test_bit(R1BIO_WriteError, &r1_bio->state)) r1_bio 2474 drivers/md/raid1.c close_write(r1_bio); r1_bio 2475 drivers/md/raid1.c raid_end_bio_io(r1_bio); r1_bio 2479 drivers/md/raid1.c static void handle_read_error(struct r1conf *conf, struct r1bio *r1_bio) r1_bio 2485 drivers/md/raid1.c clear_bit(R1BIO_ReadError, &r1_bio->state); r1_bio 2495 drivers/md/raid1.c bio = r1_bio->bios[r1_bio->read_disk]; r1_bio 2497 drivers/md/raid1.c r1_bio->bios[r1_bio->read_disk] = NULL; r1_bio 2499 drivers/md/raid1.c rdev = conf->mirrors[r1_bio->read_disk].rdev; r1_bio 2503 drivers/md/raid1.c fix_read_error(conf, r1_bio->read_disk, r1_bio 2504 drivers/md/raid1.c r1_bio->sector, r1_bio->sectors); r1_bio 2509 drivers/md/raid1.c r1_bio->bios[r1_bio->read_disk] = IO_BLOCKED; r1_bio 2513 drivers/md/raid1.c allow_barrier(conf, r1_bio->sector); r1_bio 2514 drivers/md/raid1.c bio = r1_bio->master_bio; r1_bio 2517 drivers/md/raid1.c r1_bio->state = 0; r1_bio 2518 drivers/md/raid1.c raid1_read_request(mddev, bio, r1_bio->sectors, r1_bio); r1_bio 2524 drivers/md/raid1.c struct r1bio *r1_bio; r1_bio 2541 drivers/md/raid1.c r1_bio = list_first_entry(&tmp, struct r1bio, r1_bio 2543 drivers/md/raid1.c list_del(&r1_bio->retry_list); r1_bio 2544 drivers/md/raid1.c idx = sector_to_idx(r1_bio->sector); r1_bio 2547 drivers/md/raid1.c set_bit(R1BIO_Degraded, &r1_bio->state); r1_bio 2548 drivers/md/raid1.c if (test_bit(R1BIO_WriteError, &r1_bio->state)) r1_bio 2549 drivers/md/raid1.c close_write(r1_bio); r1_bio 2550 drivers/md/raid1.c raid_end_bio_io(r1_bio); r1_bio 2564 drivers/md/raid1.c r1_bio = list_entry(head->prev, struct r1bio, retry_list); r1_bio 2566 drivers/md/raid1.c idx = sector_to_idx(r1_bio->sector); r1_bio 2570 drivers/md/raid1.c mddev = r1_bio->mddev; r1_bio 2572 drivers/md/raid1.c if (test_bit(R1BIO_IsSync, &r1_bio->state)) { r1_bio 2573 drivers/md/raid1.c if (test_bit(R1BIO_MadeGood, &r1_bio->state) || r1_bio 2574 drivers/md/raid1.c test_bit(R1BIO_WriteError, &r1_bio->state)) r1_bio 2575 drivers/md/raid1.c handle_sync_write_finished(conf, r1_bio); r1_bio 2577 drivers/md/raid1.c sync_request_write(mddev, r1_bio); r1_bio 2578 drivers/md/raid1.c } else if (test_bit(R1BIO_MadeGood, &r1_bio->state) || r1_bio 2579 drivers/md/raid1.c test_bit(R1BIO_WriteError, &r1_bio->state)) r1_bio 2580 drivers/md/raid1.c handle_write_finished(conf, r1_bio); r1_bio 2581 drivers/md/raid1.c else if (test_bit(R1BIO_ReadError, &r1_bio->state)) r1_bio 2582 drivers/md/raid1.c handle_read_error(conf, r1_bio); r1_bio 2635 drivers/md/raid1.c struct r1bio *r1_bio; r1_bio 2711 drivers/md/raid1.c r1_bio = raid1_alloc_init_r1buf(conf); r1_bio 2723 drivers/md/raid1.c r1_bio->mddev = mddev; r1_bio 2724 drivers/md/raid1.c r1_bio->sector = sector_nr; r1_bio 2725 drivers/md/raid1.c r1_bio->state = 0; r1_bio 2726 drivers/md/raid1.c set_bit(R1BIO_IsSync, &r1_bio->state); r1_bio 2732 drivers/md/raid1.c bio = r1_bio->bios[i]; r1_bio 2795 drivers/md/raid1.c r1_bio->read_disk = disk; r1_bio 2803 drivers/md/raid1.c if (r1_bio->bios[i]->bi_end_io == end_sync_write) { r1_bio 2811 drivers/md/raid1.c put_buf(r1_bio); r1_bio 2845 drivers/md/raid1.c put_buf(r1_bio); r1_bio 2875 drivers/md/raid1.c bio = r1_bio->bios[i]; r1_bio 2892 drivers/md/raid1.c r1_bio->sectors = nr_sectors; r1_bio 2908 drivers/md/raid1.c atomic_set(&r1_bio->remaining, read_targets); r1_bio 2910 drivers/md/raid1.c bio = r1_bio->bios[i]; r1_bio 2920 drivers/md/raid1.c atomic_set(&r1_bio->remaining, 1); r1_bio 2921 drivers/md/raid1.c bio = r1_bio->bios[r1_bio->read_disk];