md-cluster: introduce resync_info_get interface for sanity check

Since the resync region from suspend_info means one node
is reshaping this area, so the position of reshape_progress
should be included in the area.

Reviewed-by: NeilBrown <neilb@suse.com>
Signed-off-by: Guoqing Jiang <gqjiang@suse.com>
Signed-off-by: Shaohua Li <shli@fb.com>
This commit is contained in:
Guoqing Jiang
2018-10-18 16:37:43 +08:00
committed by Shaohua Li
parent 7564beda19
commit 5ebaf80bc8
3 changed files with 22 additions and 1 deletions

View File

@@ -1323,6 +1323,19 @@ static int resync_start(struct mddev *mddev)
return dlm_lock_sync_interruptible(cinfo->resync_lockres, DLM_LOCK_EX, mddev);
}
static void resync_info_get(struct mddev *mddev, sector_t *lo, sector_t *hi)
{
struct md_cluster_info *cinfo = mddev->cluster_info;
struct suspend_info *s;
spin_lock_irq(&cinfo->suspend_lock);
list_for_each_entry(s, &cinfo->suspend_list, list) {
*lo = s->lo;
*hi = s->hi;
}
spin_unlock_irq(&cinfo->suspend_lock);
}
static int resync_info_update(struct mddev *mddev, sector_t lo, sector_t hi)
{
struct md_cluster_info *cinfo = mddev->cluster_info;
@@ -1562,6 +1575,7 @@ static struct md_cluster_operations cluster_ops = {
.resync_start = resync_start,
.resync_finish = resync_finish,
.resync_info_update = resync_info_update,
.resync_info_get = resync_info_get,
.metadata_update_start = metadata_update_start,
.metadata_update_finish = metadata_update_finish,
.metadata_update_cancel = metadata_update_cancel,