Lines Matching full:recovery

519 		set_bit(MD_RECOVERY_NEEDED, &mddev->recovery);  in __mddev_resume()
1468 /* active but not in sync implies recovery up to in super_90_validate()
2052 &mddev->recovery)) in super_1_validate()
2561 /* May as well allow recovery to be retried once */ in bind_rdev_to_array()
2756 * curr_resync_completed can only be used during recovery. in md_update_sb()
2763 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) && in md_update_sb()
2764 test_bit(MD_RECOVERY_RECOVER, &mddev->recovery) && in md_update_sb()
2765 !test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_update_sb()
2813 * then a recovery will happen and soon that array won't in md_update_sb()
2895 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in md_update_sb()
2933 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in add_bound_rdev()
2934 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in add_bound_rdev()
3083 set_bit(MD_RECOVERY_NEEDED, &rdev->mddev->recovery); in state_store()
3115 * check if recovery is needed. in state_store()
3121 set_bit(MD_RECOVERY_NEEDED, &rdev->mddev->recovery); in state_store()
3251 set_bit(MD_RECOVERY_NEEDED, &rdev->mddev->recovery); in slot_store()
3262 if (test_bit(MD_RECOVERY_RUNNING, &rdev->mddev->recovery)) in slot_store()
3347 test_bit(MD_RECOVERY_RUNNING,&mddev->recovery)) in new_offset_store()
4014 * - array is not engaged in resync/recovery/reshape in level_store()
4021 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || in level_store()
4369 if (mddev->pers && !test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) in resync_start_store()
4859 unsigned long recovery = mddev->recovery; in action_show() local
4860 if (test_bit(MD_RECOVERY_FROZEN, &recovery)) in action_show()
4862 else if (test_bit(MD_RECOVERY_RUNNING, &recovery) || in action_show()
4863 (md_is_rdwr(mddev) && test_bit(MD_RECOVERY_NEEDED, &recovery))) { in action_show()
4864 if (test_bit(MD_RECOVERY_RESHAPE, &recovery)) in action_show()
4866 else if (test_bit(MD_RECOVERY_SYNC, &recovery)) { in action_show()
4867 if (!test_bit(MD_RECOVERY_REQUESTED, &recovery)) in action_show()
4869 else if (test_bit(MD_RECOVERY_CHECK, &recovery)) in action_show()
4873 } else if (test_bit(MD_RECOVERY_RECOVER, &recovery)) in action_show()
4897 if (!test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in stop_sync_thread()
4905 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in stop_sync_thread()
4915 !test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || in stop_sync_thread()
4925 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in idle_sync_thread()
4939 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in frozen_sync_thread()
4961 else if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in action_store()
4964 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
4966 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
4967 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in action_store()
4974 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in action_store()
4979 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
4988 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
4997 set_bit(MD_RECOVERY_CHECK, &mddev->recovery); in action_store()
5000 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in action_store()
5001 set_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in action_store()
5002 set_bit(MD_RECOVERY_SYNC, &mddev->recovery); in action_store()
5012 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in action_store()
5154 if (!test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in sync_completed_show()
5161 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) || in sync_completed_show()
5162 test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) in sync_completed_show()
5195 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in min_sync_store()
5238 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in max_sync_store()
6041 mddev->recovery = 0; in md_run()
6149 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_run()
6150 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_run()
6215 set_bit(MD_RECOVERY_WAIT, &mddev->recovery); in md_start()
6218 clear_bit(MD_RECOVERY_WAIT, &mddev->recovery); in md_start()
6259 /* Kick recovery or resync if necessary */ in restart_array()
6260 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in restart_array()
6300 mddev->recovery = 0; in md_clean()
6374 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in __md_stop()
6402 if (!test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) { in md_set_readonly()
6404 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_set_readonly()
6416 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in md_set_readonly()
6436 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in md_set_readonly()
6437 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_set_readonly()
6457 if (!test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) { in do_md_stop()
6459 set_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in do_md_stop()
6469 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in do_md_stop()
6473 clear_bit(MD_RECOVERY_FROZEN, &mddev->recovery); in do_md_stop()
6474 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in do_md_stop()
7096 * Kick recovery, maybe this spare has to be added to the in hot_add_disk()
7099 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in hot_add_disk()
7116 if (mddev->recovery || mddev->sync_thread) in set_bitmap_file()
7314 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || in update_size()
7353 test_bit(MD_RECOVERY_RUNNING, &mddev->recovery) || in update_raid_disks()
7354 test_bit(MD_RESYNCING_REMOTE, &mddev->recovery) || in update_raid_disks()
7451 if (mddev->recovery || mddev->sync_thread) { in update_array_info()
7691 /* need to ensure recovery thread has run */ in md_ioctl()
7694 &mddev->recovery), in md_ioctl()
7795 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_ioctl()
8107 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_error()
8109 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_error()
8111 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_error()
8160 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) || in status_resync()
8161 test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) in status_resync()
8168 if (test_bit(MD_RECOVERY_DONE, &mddev->recovery)) in status_resync()
8187 if (test_bit(MD_RESYNCING_REMOTE, &mddev->recovery)) { in status_resync()
8241 (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)? in status_resync()
8243 (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)? in status_resync()
8245 (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) ? in status_resync()
8246 "resync" : "recovery"))), in status_resync()
8579 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_done_sync()
8580 set_bit(MD_RECOVERY_ERROR, &mddev->recovery); in md_done_sync()
8582 // stop recovery, signal do_sync .... in md_done_sync()
8606 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_write_start()
8795 if (test_bit(MD_RECOVERY_DONE, &mddev->recovery)) in md_do_sync()
8798 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
8801 if (test_bit(MD_RECOVERY_WAIT, &mddev->recovery) || in md_do_sync()
8803 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_do_sync()
8813 if (!(test_bit(MD_RECOVERY_SYNC, &mddev->recovery) || in md_do_sync()
8814 test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) || in md_do_sync()
8815 test_bit(MD_RECOVERY_RECOVER, &mddev->recovery)) in md_do_sync()
8821 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { in md_do_sync()
8822 if (test_bit(MD_RECOVERY_CHECK, &mddev->recovery)) { in md_do_sync()
8825 } else if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) { in md_do_sync()
8830 } else if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) in md_do_sync()
8833 desc = "recovery"; in md_do_sync()
8852 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
8881 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_do_sync()
8904 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { in md_do_sync()
8911 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in md_do_sync()
8916 } else if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery)) { in md_do_sync()
8927 /* recovery follows the physical size of devices */ in md_do_sync()
8942 * complete before we start doing a recovery. in md_do_sync()
8945 * recovery has checked that bit and skipped that in md_do_sync()
8997 if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9010 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery) && in md_do_sync()
9019 !test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { in md_do_sync()
9028 &mddev->recovery)); in md_do_sync()
9031 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9036 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_do_sync()
9045 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9077 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9110 test_bit(MD_RECOVERY_INTR, &mddev->recovery) in md_do_sync()
9118 if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9119 !test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_do_sync()
9126 if (!test_bit(MD_RECOVERY_CHECK, &mddev->recovery) && in md_do_sync()
9128 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) { in md_do_sync()
9129 if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { in md_do_sync()
9134 &mddev->recovery)) in md_do_sync()
9144 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) in md_do_sync()
9146 if (!test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9147 test_bit(MD_RECOVERY_RECOVER, &mddev->recovery)) { in md_do_sync()
9168 if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_do_sync()
9169 !test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_do_sync()
9183 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery)) { in md_do_sync()
9185 if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in md_do_sync()
9188 } else if (test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery)) in md_do_sync()
9190 set_bit(MD_RECOVERY_DONE, &mddev->recovery); in md_do_sync()
9286 if (this && test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) in remove_and_add_spares()
9338 set_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); in md_choose_sync_action()
9339 clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9350 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_choose_sync_action()
9351 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); in md_choose_sync_action()
9352 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in md_choose_sync_action()
9354 /* Start new recovery. */ in md_choose_sync_action()
9355 set_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9359 /* Check if recovery is in progress. */ in md_choose_sync_action()
9361 set_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_choose_sync_action()
9362 clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_choose_sync_action()
9367 if (test_bit(MD_RECOVERY_SYNC, &mddev->recovery)) in md_choose_sync_action()
9417 name = test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) ? in md_start_sync()
9443 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_start_sync()
9444 clear_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); in md_start_sync()
9445 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in md_start_sync()
9446 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); in md_start_sync()
9447 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_start_sync()
9459 if (test_and_clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery) && in md_start_sync()
9466 if (!test_bit(MD_RECOVERY_DONE, &mddev->recovery)) { in unregister_sync_thread()
9467 /* resync/recovery still happening */ in unregister_sync_thread()
9468 clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in unregister_sync_thread()
9482 * need this as they never do any recovery or update the superblock.
9487 * "->recovery" and create a thread at ->sync_thread.
9494 * 2/ If a recovery thread is running, don't do anything else.
9495 * 3/ If recovery has finished, clean up, possibly marking spares active.
9515 !test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) && in md_check_recovery()
9516 !test_bit(MD_RECOVERY_DONE, &mddev->recovery)) in md_check_recovery()
9520 test_bit(MD_RECOVERY_NEEDED, &mddev->recovery) || in md_check_recovery()
9521 test_bit(MD_RECOVERY_DONE, &mddev->recovery) || in md_check_recovery()
9537 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in md_check_recovery()
9556 set_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_check_recovery()
9564 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_check_recovery()
9568 clear_bit(MD_RECOVERY_RECOVER, &mddev->recovery); in md_check_recovery()
9569 clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_check_recovery()
9600 if (test_bit(MD_RECOVERY_RUNNING, &mddev->recovery)) { in md_check_recovery()
9610 set_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_check_recovery()
9615 clear_bit(MD_RECOVERY_INTR, &mddev->recovery); in md_check_recovery()
9616 clear_bit(MD_RECOVERY_DONE, &mddev->recovery); in md_check_recovery()
9618 if (test_and_clear_bit(MD_RECOVERY_NEEDED, &mddev->recovery) && in md_check_recovery()
9619 !test_bit(MD_RECOVERY_FROZEN, &mddev->recovery)) { in md_check_recovery()
9622 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_check_recovery()
9643 if (!test_bit(MD_RECOVERY_INTR, &mddev->recovery) && in md_reap_sync_thread()
9644 !test_bit(MD_RECOVERY_REQUESTED, &mddev->recovery) && in md_reap_sync_thread()
9653 if (test_bit(MD_RECOVERY_RESHAPE, &mddev->recovery) && in md_reap_sync_thread()
9673 clear_bit(MD_RECOVERY_RUNNING, &mddev->recovery); in md_reap_sync_thread()
9674 clear_bit(MD_RECOVERY_DONE, &mddev->recovery); in md_reap_sync_thread()
9675 clear_bit(MD_RECOVERY_SYNC, &mddev->recovery); in md_reap_sync_thread()
9676 clear_bit(MD_RECOVERY_RESHAPE, &mddev->recovery); in md_reap_sync_thread()
9677 clear_bit(MD_RECOVERY_REQUESTED, &mddev->recovery); in md_reap_sync_thread()
9678 clear_bit(MD_RECOVERY_CHECK, &mddev->recovery); in md_reap_sync_thread()
9687 /* flag recovery needed just to double check */ in md_reap_sync_thread()
9688 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in md_reap_sync_thread()
9909 set_bit(MD_RECOVERY_NEEDED, &mddev->recovery); in check_sb_changes()
9914 * as faulty. The recovery is performed by the in check_sb_changes()
9935 if (test_bit(MD_RESYNCING_REMOTE, &mddev->recovery) && in check_sb_changes()
9946 } else if (test_bit(MD_RESYNCING_REMOTE, &mddev->recovery) && in check_sb_changes()
9994 /* The other node finished recovery, call spare_active to set in read_rdev()