|
@@ -1311,8 +1311,10 @@ static int add_new_disk(struct mddev *mddev, struct md_rdev *rdev)
|
|
cmsg.raid_slot = cpu_to_le32(rdev->desc_nr);
|
|
cmsg.raid_slot = cpu_to_le32(rdev->desc_nr);
|
|
lock_comm(cinfo, 1);
|
|
lock_comm(cinfo, 1);
|
|
ret = __sendmsg(cinfo, &cmsg);
|
|
ret = __sendmsg(cinfo, &cmsg);
|
|
- if (ret)
|
|
|
|
|
|
+ if (ret) {
|
|
|
|
+ unlock_comm(cinfo);
|
|
return ret;
|
|
return ret;
|
|
|
|
+ }
|
|
cinfo->no_new_dev_lockres->flags |= DLM_LKF_NOQUEUE;
|
|
cinfo->no_new_dev_lockres->flags |= DLM_LKF_NOQUEUE;
|
|
ret = dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_EX);
|
|
ret = dlm_lock_sync(cinfo->no_new_dev_lockres, DLM_LOCK_EX);
|
|
cinfo->no_new_dev_lockres->flags &= ~DLM_LKF_NOQUEUE;
|
|
cinfo->no_new_dev_lockres->flags &= ~DLM_LKF_NOQUEUE;
|