|
@@ -802,15 +802,6 @@ static int slot_number(struct mddev *mddev)
|
|
return cinfo->slot_number - 1;
|
|
return cinfo->slot_number - 1;
|
|
}
|
|
}
|
|
|
|
|
|
-static void resync_info_update(struct mddev *mddev, sector_t lo, sector_t hi)
|
|
|
|
-{
|
|
|
|
- struct md_cluster_info *cinfo = mddev->cluster_info;
|
|
|
|
-
|
|
|
|
- add_resync_info(mddev, cinfo->bitmap_lockres, lo, hi);
|
|
|
|
- /* Re-acquire the lock to refresh LVB */
|
|
|
|
- dlm_lock_sync(cinfo->bitmap_lockres, DLM_LOCK_PW);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static int metadata_update_start(struct mddev *mddev)
|
|
static int metadata_update_start(struct mddev *mddev)
|
|
{
|
|
{
|
|
return lock_comm(mddev->cluster_info);
|
|
return lock_comm(mddev->cluster_info);
|
|
@@ -836,45 +827,25 @@ static int metadata_update_cancel(struct mddev *mddev)
|
|
return dlm_unlock_sync(cinfo->token_lockres);
|
|
return dlm_unlock_sync(cinfo->token_lockres);
|
|
}
|
|
}
|
|
|
|
|
|
-static int resync_send(struct mddev *mddev, enum msg_type type,
|
|
|
|
- sector_t lo, sector_t hi)
|
|
|
|
|
|
+static int resync_info_update(struct mddev *mddev, sector_t lo, sector_t hi)
|
|
{
|
|
{
|
|
struct md_cluster_info *cinfo = mddev->cluster_info;
|
|
struct md_cluster_info *cinfo = mddev->cluster_info;
|
|
struct cluster_msg cmsg;
|
|
struct cluster_msg cmsg;
|
|
int slot = cinfo->slot_number - 1;
|
|
int slot = cinfo->slot_number - 1;
|
|
|
|
|
|
|
|
+ add_resync_info(mddev, cinfo->bitmap_lockres, lo, hi);
|
|
|
|
+ /* Re-acquire the lock to refresh LVB */
|
|
|
|
+ dlm_lock_sync(cinfo->bitmap_lockres, DLM_LOCK_PW);
|
|
pr_info("%s:%d lo: %llu hi: %llu\n", __func__, __LINE__,
|
|
pr_info("%s:%d lo: %llu hi: %llu\n", __func__, __LINE__,
|
|
(unsigned long long)lo,
|
|
(unsigned long long)lo,
|
|
(unsigned long long)hi);
|
|
(unsigned long long)hi);
|
|
- resync_info_update(mddev, lo, hi);
|
|
|
|
- cmsg.type = cpu_to_le32(type);
|
|
|
|
|
|
+ cmsg.type = cpu_to_le32(RESYNCING);
|
|
cmsg.slot = cpu_to_le32(slot);
|
|
cmsg.slot = cpu_to_le32(slot);
|
|
cmsg.low = cpu_to_le64(lo);
|
|
cmsg.low = cpu_to_le64(lo);
|
|
cmsg.high = cpu_to_le64(hi);
|
|
cmsg.high = cpu_to_le64(hi);
|
|
return sendmsg(cinfo, &cmsg);
|
|
return sendmsg(cinfo, &cmsg);
|
|
}
|
|
}
|
|
|
|
|
|
-static int resync_start(struct mddev *mddev, sector_t lo, sector_t hi)
|
|
|
|
-{
|
|
|
|
- pr_info("%s:%d\n", __func__, __LINE__);
|
|
|
|
- return resync_send(mddev, RESYNCING, lo, hi);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static void resync_finish(struct mddev *mddev)
|
|
|
|
-{
|
|
|
|
- struct md_cluster_info *cinfo = mddev->cluster_info;
|
|
|
|
- struct cluster_msg cmsg;
|
|
|
|
- int slot = cinfo->slot_number - 1;
|
|
|
|
-
|
|
|
|
- pr_info("%s:%d\n", __func__, __LINE__);
|
|
|
|
- resync_send(mddev, RESYNCING, 0, 0);
|
|
|
|
- if (test_bit(MD_RECOVERY_INTR, &mddev->recovery)) {
|
|
|
|
- cmsg.type = cpu_to_le32(BITMAP_NEEDS_SYNC);
|
|
|
|
- cmsg.slot = cpu_to_le32(slot);
|
|
|
|
- sendmsg(cinfo, &cmsg);
|
|
|
|
- }
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
static int area_resyncing(struct mddev *mddev, int direction,
|
|
static int area_resyncing(struct mddev *mddev, int direction,
|
|
sector_t lo, sector_t hi)
|
|
sector_t lo, sector_t hi)
|
|
{
|
|
{
|
|
@@ -997,8 +968,6 @@ static struct md_cluster_operations cluster_ops = {
|
|
.leave = leave,
|
|
.leave = leave,
|
|
.slot_number = slot_number,
|
|
.slot_number = slot_number,
|
|
.resync_info_update = resync_info_update,
|
|
.resync_info_update = resync_info_update,
|
|
- .resync_start = resync_start,
|
|
|
|
- .resync_finish = resync_finish,
|
|
|
|
.metadata_update_start = metadata_update_start,
|
|
.metadata_update_start = metadata_update_start,
|
|
.metadata_update_finish = metadata_update_finish,
|
|
.metadata_update_finish = metadata_update_finish,
|
|
.metadata_update_cancel = metadata_update_cancel,
|
|
.metadata_update_cancel = metadata_update_cancel,
|