Lines Matching defs:failrec
334 state->failrec = NULL;
2096 struct io_failure_record *failrec)
2117 state->failrec = failrec;
2127 struct io_failure_record *failrec;
2136 failrec = ERR_PTR(-ENOENT);
2141 failrec = ERR_PTR(-ENOENT);
2145 failrec = state->failrec;
2148 return failrec;
2367 struct io_failure_record *failrec;
2378 failrec = get_state_failrec(failure_tree, start);
2379 if (IS_ERR(failrec))
2382 BUG_ON(!failrec->this_mirror);
2384 if (failrec->in_validation) {
2388 failrec->start);
2396 failrec->start,
2400 if (state && state->start <= failrec->start &&
2401 state->end >= failrec->start + failrec->len - 1) {
2402 num_copies = btrfs_num_copies(fs_info, failrec->logical,
2403 failrec->len);
2405 repair_io_failure(fs_info, ino, start, failrec->len,
2406 failrec->logical, page, pg_offset,
2407 failrec->failed_mirror);
2412 free_io_failure(failure_tree, io_tree, failrec);
2426 struct io_failure_record *failrec;
2442 failrec = state->failrec;
2444 kfree(failrec);
2455 struct io_failure_record *failrec;
2463 failrec = get_state_failrec(failure_tree, start);
2464 if (!IS_ERR(failrec)) {
2467 failrec->logical, failrec->start, failrec->len,
2468 failrec->in_validation);
2470 * when data can be on disk more than twice, add to failrec here
2475 return failrec;
2478 failrec = kzalloc(sizeof(*failrec), GFP_NOFS);
2479 if (!failrec)
2482 failrec->start = start;
2483 failrec->len = end - start + 1;
2484 failrec->this_mirror = 0;
2485 failrec->bio_flags = 0;
2486 failrec->in_validation = 0;
2489 em = lookup_extent_mapping(em_tree, start, failrec->len);
2492 kfree(failrec);
2502 kfree(failrec);
2510 failrec->bio_flags = EXTENT_BIO_COMPRESSED;
2511 extent_set_compress_type(&failrec->bio_flags, em->compress_type);
2516 logical, start, failrec->len);
2518 failrec->logical = logical;
2525 ret = set_state_failrec(failure_tree, start, failrec);
2529 kfree(failrec);
2533 return failrec;
2537 struct io_failure_record *failrec,
2543 num_copies = btrfs_num_copies(fs_info, failrec->logical, failrec->len);
2552 num_copies, failrec->this_mirror, failed_mirror);
2570 BUG_ON(failrec->in_validation);
2571 failrec->in_validation = 1;
2572 failrec->this_mirror = failed_mirror;
2579 if (failrec->in_validation) {
2580 BUG_ON(failrec->this_mirror != failed_mirror);
2581 failrec->in_validation = 0;
2582 failrec->this_mirror = 0;
2584 failrec->failed_mirror = failed_mirror;
2585 failrec->this_mirror++;
2586 if (failrec->this_mirror == failed_mirror)
2587 failrec->this_mirror++;
2590 if (failrec->this_mirror > num_copies) {
2593 num_copies, failrec->this_mirror, failed_mirror);
2648 struct io_failure_record *failrec;
2664 failrec = btrfs_get_io_failure_record(inode, start, end);
2665 if (IS_ERR(failrec))
2666 return errno_to_blk_status(PTR_ERR(failrec));
2670 if (!btrfs_check_repairable(inode, need_validation, failrec,
2672 free_io_failure(failure_tree, tree, failrec);
2682 repair_bio->bi_iter.bi_sector = failrec->logical >> 9;
2693 bio_add_page(repair_bio, page, failrec->len, pgoff);
2694 repair_io_bio->logical = failrec->start;
2699 failrec->this_mirror, failrec->in_validation);
2701 status = submit_bio_hook(inode, repair_bio, failrec->this_mirror,
2702 failrec->bio_flags);
2704 free_io_failure(failure_tree, tree, failrec);