Lines Matching full:recovery
535 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in __mddev_resume()
1545 /* active but not in sync implies recovery up to in super_90_validate()
2129 &mddev->recovery)) in super_1_validate()
2580 /* May as well allow recovery to be retried once */ in bind_rdev_to_array()
2776 * curr_resync_completed can only be used during recovery. in md_update_sb()
2783 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) && in md_update_sb()
2784 test_bit(MD_RECOVERY_RECOVER, &mddev->recovery) && in md_update_sb()
2785 !test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_update_sb()
2833 * then a recovery will happen and soon that array won't in md_update_sb()
2914 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in md_update_sb()
2952 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in add_bound_rdev()
2953 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in add_bound_rdev()
3099 set_bit(MD_RECOVERY_NEEDED, &rdev->mddev->recovery); in state_store()
3130 * check if recovery is needed. in state_store()
3136 set_bit(MD_RECOVERY_NEEDED, &rdev->mddev->recovery); in state_store()
3265 set_bit(MD_RECOVERY_NEEDED, &rdev->mddev->recovery); in slot_store()
3275 if (test_bit(MD_RECOVERY_RUNNING, &rdev->mddev->recovery)) in slot_store()
3359 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in new_offset_store()
4026 * - array is not engaged in resync/recovery/reshape in level_store()
4032 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || in level_store()
4483 if (mddev->pers && !test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) in resync_start_store()
5028 unsigned long recovery = mddev->recovery; in md_sync_action() local
5035 if (test_bit(MD_RECOVERY_FROZEN, &recovery)) in md_sync_action()
5049 if (!test_bit(MD_RECOVERY_RUNNING, &recovery) && in md_sync_action()
5050 !test_bit(MD_RECOVERY_NEEDED, &recovery)) in md_sync_action()
5063 if (test_bit(MD_RECOVERY_RESHAPE, &recovery)) in md_sync_action()
5066 if (test_bit(MD_RECOVERY_RECOVER, &recovery)) in md_sync_action()
5069 if (test_bit(MD_RECOVERY_SYNC, &recovery)) { in md_sync_action()
5074 if (test_bit(MD_RECOVERY_CHECK, &recovery)) in md_sync_action()
5076 if (test_bit(MD_RECOVERY_REQUESTED, &recovery)) in md_sync_action()
5124 if (!test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in stop_sync_thread()
5132 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in stop_sync_thread()
5142 !test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || in stop_sync_thread()
5143 (!test_bit(MD_RECOVERY_FROZEN, &mddev->recovery) && in stop_sync_thread()
5154 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_idle_sync_thread()
5163 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_frozen_sync_thread()
5172 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_unfrozen_sync_thread()
5173 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_unfrozen_sync_thread()
5189 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in mddev_start_reshape()
5199 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in mddev_start_reshape()
5231 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in action_store()
5254 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
5258 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
5264 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
5265 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in action_store()
5268 set_bit(MD_RECOVERY_CHECK, &mddev->recovery); in action_store()
5271 set_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in action_store()
5272 set_bit(MD_RECOVERY_SYNC, &mddev->recovery); in action_store()
5276 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
5292 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in action_store()
5468 if (!test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in sync_completed_show()
5475 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) || in sync_completed_show()
5476 test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) in sync_completed_show()
5509 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in min_sync_store()
5552 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in max_sync_store()
6450 mddev->recovery = 0; in md_run()
6532 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_run()
6533 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_run()
6600 set_bit(MD_RECOVERY_WAIT, &mddev->recovery); in md_start()
6602 clear_bit(MD_RECOVERY_WAIT, &mddev->recovery); in md_start()
6643 /* Kick recovery or resync if necessary */ in restart_array()
6644 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in restart_array()
6698 mddev->recovery = 0; in md_clean()
6742 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_stop_writes()
6777 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in __md_stop()
6806 if (!test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) { in md_set_readonly()
6808 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_set_readonly()
6816 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in md_set_readonly()
6834 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_set_readonly()
6835 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_set_readonly()
6852 if (!test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) { in do_md_stop()
6854 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in do_md_stop()
6860 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in do_md_stop()
6863 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in do_md_stop()
6864 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in do_md_stop()
7470 * Kick recovery, maybe this spare has to be added to the in hot_add_disk()
7473 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in hot_add_disk()
7492 if (mddev->recovery || mddev->sync_thread) in set_bitmap_file()
7687 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in update_size()
7723 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || in update_raid_disks()
7724 test_bit(MD_RESYNCING_REMOTE, &mddev->recovery) || in update_raid_disks()
7843 if (mddev->recovery || mddev->sync_thread) { in update_array_info()
8146 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_ioctl()
8460 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_error()
8462 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_error()
8464 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_error()
8516 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) || in status_resync()
8517 test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) in status_resync()
8524 if (test_bit(MD_RECOVERY_DONE, &mddev->recovery)) in status_resync()
8543 if (test_bit(MD_RESYNCING_REMOTE, &mddev->recovery)) { in status_resync()
8597 (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)? in status_resync()
8599 (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)? in status_resync()
8601 (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) ? in status_resync()
8602 "resync" : "recovery"))), in status_resync()
8946 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_done_sync()
8947 set_bit(MD_RECOVERY_ERROR, &mddev->recovery); in md_done_sync()
8949 // stop recovery, signal do_sync .... in md_done_sync()
8972 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_write_start()
9203 * If lazy recovery is requested and all rdevs are in sync, select the rdev with
9204 * the higest index to perfore recovery to build initial xor data, this is the
9270 if (test_bit(MD_RECOVERY_LAZY_RECOVER, &mddev->recovery) && in md_sync_position()
9276 * complete before we start doing a recovery. in md_sync_position()
9279 * recovery has checked that bit and skipped that in md_sync_position()
9324 if (test_bit(MD_RECOVERY_DONE, &mddev->recovery)) in md_do_sync()
9327 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9330 if (test_bit(MD_RECOVERY_WAIT, &mddev->recovery) || in md_do_sync()
9332 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_do_sync()
9342 if (!(test_bit(MD_RECOVERY_SYNC, &mddev->recovery) || in md_do_sync()
9343 test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) || in md_do_sync()
9344 test_bit(MD_RECOVERY_RECOVER, &mddev->recovery)) in md_do_sync()
9352 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_do_sync()
9375 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9404 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_do_sync()
9472 if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9485 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && in md_do_sync()
9494 !test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { in md_do_sync()
9503 &mddev->recovery)); in md_do_sync()
9506 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9518 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_do_sync()
9527 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9560 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9594 test_bit(MD_RECOVERY_INTR, &mddev->recovery) in md_do_sync()
9602 if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9603 !test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_do_sync()
9610 if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) && in md_do_sync()
9612 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { in md_do_sync()
9613 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { in md_do_sync()
9618 &mddev->recovery)) in md_do_sync()
9628 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9630 if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9631 test_bit(MD_RECOVERY_RECOVER, &mddev->recovery)) { in md_do_sync()
9648 if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9649 !test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_do_sync()
9663 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { in md_do_sync()
9665 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in md_do_sync()
9668 } else if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in md_do_sync()
9670 set_bit(MD_RECOVERY_DONE, &mddev->recovery); in md_do_sync()
9798 if (this && test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in remove_and_add_spares()
9838 set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); in md_choose_sync_action()
9839 clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9840 clear_bit(MD_RECOVERY_LAZY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9847 set_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_choose_sync_action()
9848 clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9849 clear_bit(MD_RECOVERY_LAZY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9859 if (*spares || test_bit(MD_RECOVERY_LAZY_RECOVER, &mddev->recovery)) { in md_choose_sync_action()
9860 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_choose_sync_action()
9861 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); in md_choose_sync_action()
9862 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in md_choose_sync_action()
9864 /* Start new recovery. */ in md_choose_sync_action()
9865 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9870 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) in md_choose_sync_action()
9920 name = test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) ? in md_start_sync()
9946 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_start_sync()
9947 clear_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); in md_start_sync()
9948 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in md_start_sync()
9949 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); in md_start_sync()
9950 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_start_sync()
9962 if (test_and_clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery) && in md_start_sync()
9969 if (!test_bit(MD_RECOVERY_DONE, &mddev->recovery)) { in unregister_sync_thread()
9970 /* resync/recovery still happening */ in unregister_sync_thread()
9971 clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in unregister_sync_thread()
9985 * need this as they never do any recovery or update the superblock.
9990 * "->recovery" and create a thread at ->sync_thread.
9997 * 2/ If a recovery thread is running, don't do anything else.
9998 * 3/ If recovery has finished, clean up, possibly marking spares active.
10018 !test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) && in md_check_recovery()
10019 !test_bit(MD_RECOVERY_DONE, &mddev->recovery)) in md_check_recovery()
10023 test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) || in md_check_recovery()
10024 test_bit(MD_RECOVERY_DONE, &mddev->recovery) || in md_check_recovery()
10040 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in md_check_recovery()
10059 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_check_recovery()
10067 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_check_recovery()
10071 clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_check_recovery()
10072 clear_bit(MD_RECOVERY_LAZY_RECOVER, &mddev->recovery); in md_check_recovery()
10073 clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_check_recovery()
10104 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in md_check_recovery()
10114 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_check_recovery()
10119 clear_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_check_recovery()
10120 clear_bit(MD_RECOVERY_DONE, &mddev->recovery); in md_check_recovery()
10122 if (test_and_clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery) && in md_check_recovery()
10123 !test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) { in md_check_recovery()
10126 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_check_recovery()
10147 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_reap_sync_thread()
10148 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) && in md_reap_sync_thread()
10157 if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_reap_sync_thread()
10177 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_reap_sync_thread()
10178 clear_bit(MD_RECOVERY_DONE, &mddev->recovery); in md_reap_sync_thread()
10179 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_reap_sync_thread()
10180 clear_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); in md_reap_sync_thread()
10181 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in md_reap_sync_thread()
10182 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); in md_reap_sync_thread()
10183 clear_bit(MD_RECOVERY_LAZY_RECOVER, &mddev->recovery); in md_reap_sync_thread()
10192 /* flag recovery needed just to double check */ in md_reap_sync_thread()
10193 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_reap_sync_thread()
10399 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in check_sb_changes()
10440 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in check_sb_changes()
10445 * as faulty. The recovery is performed by the in check_sb_changes()
10466 if (test_bit(MD_RESYNCING_REMOTE, &mddev->recovery) && in check_sb_changes()
10477 } else if (test_bit(MD_RESYNCING_REMOTE, &mddev->recovery) && in check_sb_changes()
10525 /* The other node finished recovery, call spare_active to set in read_rdev()