|
@@ -293,6 +293,7 @@ static void recover_bitmaps(struct md_thread *thread)
|
|
|
dlm_unlock:
|
|
|
dlm_unlock_sync(bm_lockres);
|
|
|
clear_bit:
|
|
|
+ lockres_free(bm_lockres);
|
|
|
clear_bit(slot, &cinfo->recovery_map);
|
|
|
}
|
|
|
}
|
|
@@ -682,8 +683,10 @@ static int gather_all_resync_info(struct mddev *mddev, int total_slots)
|
|
|
bm_lockres = lockres_init(mddev, str, NULL, 1);
|
|
|
if (!bm_lockres)
|
|
|
return -ENOMEM;
|
|
|
- if (i == (cinfo->slot_number - 1))
|
|
|
+ if (i == (cinfo->slot_number - 1)) {
|
|
|
+ lockres_free(bm_lockres);
|
|
|
continue;
|
|
|
+ }
|
|
|
|
|
|
bm_lockres->flags |= DLM_LKF_NOQUEUE;
|
|
|
ret = dlm_lock_sync(bm_lockres, DLM_LOCK_PW);
|
|
@@ -858,6 +861,7 @@ static int leave(struct mddev *mddev)
|
|
|
lockres_free(cinfo->token_lockres);
|
|
|
lockres_free(cinfo->ack_lockres);
|
|
|
lockres_free(cinfo->no_new_dev_lockres);
|
|
|
+ lockres_free(cinfo->resync_lockres);
|
|
|
lockres_free(cinfo->bitmap_lockres);
|
|
|
unlock_all_bitmaps(mddev);
|
|
|
dlm_release_lockspace(cinfo->lockspace, 2);
|