|
|
@@ -304,15 +304,6 @@ static void recover_bitmaps(struct md_thread *thread)
|
|
|
while (cinfo->recovery_map) {
|
|
|
slot = fls64((u64)cinfo->recovery_map) - 1;
|
|
|
|
|
|
- /* Clear suspend_area associated with the bitmap */
|
|
|
- spin_lock_irq(&cinfo->suspend_lock);
|
|
|
- list_for_each_entry_safe(s, tmp, &cinfo->suspend_list, list)
|
|
|
- if (slot == s->slot) {
|
|
|
- list_del(&s->list);
|
|
|
- kfree(s);
|
|
|
- }
|
|
|
- spin_unlock_irq(&cinfo->suspend_lock);
|
|
|
-
|
|
|
snprintf(str, 64, "bitmap%04d", slot);
|
|
|
bm_lockres = lockres_init(mddev, str, NULL, 1);
|
|
|
if (!bm_lockres) {
|
|
|
@@ -331,6 +322,16 @@ static void recover_bitmaps(struct md_thread *thread)
|
|
|
pr_err("md-cluster: Could not copy data from bitmap %d\n", slot);
|
|
|
goto clear_bit;
|
|
|
}
|
|
|
+
|
|
|
+ /* Clear suspend_area associated with the bitmap */
|
|
|
+ spin_lock_irq(&cinfo->suspend_lock);
|
|
|
+ list_for_each_entry_safe(s, tmp, &cinfo->suspend_list, list)
|
|
|
+ if (slot == s->slot) {
|
|
|
+ list_del(&s->list);
|
|
|
+ kfree(s);
|
|
|
+ }
|
|
|
+ spin_unlock_irq(&cinfo->suspend_lock);
|
|
|
+
|
|
|
if (hi > 0) {
|
|
|
if (lo < mddev->recovery_cp)
|
|
|
mddev->recovery_cp = lo;
|