diff options
Diffstat (limited to 'drivers/md/md-cluster.c')
| -rw-r--r-- | drivers/md/md-cluster.c | 6 | 
1 files changed, 5 insertions, 1 deletions
| diff --git a/drivers/md/md-cluster.c b/drivers/md/md-cluster.c index 0ded8e97751d..dd97d4245822 100644 --- a/drivers/md/md-cluster.c +++ b/drivers/md/md-cluster.c @@ -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); | 
