set resync_start in Incremental_container
From: Dan Williams <dan.j.williams@intel.com> Metadata handlers set mdinfo.resync_start depending on the state of the array. By default mdadm assumes the array is dirty and needs a full resync. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
3cfe624740
commit
0fd5c350e5
1
mdadm.h
1
mdadm.h
|
@ -147,6 +147,7 @@ struct mdinfo {
|
|||
*/
|
||||
int reshape_active;
|
||||
unsigned long long reshape_progress;
|
||||
unsigned long long resync_start;
|
||||
int new_level, delta_disks, new_layout, new_chunk;
|
||||
int errors;
|
||||
int cache_size; /* size of raid456 stripe cache*/
|
||||
|
|
|
@ -1053,6 +1053,11 @@ static struct mdinfo *container_content_imsm(struct supertype *st)
|
|||
this->array.chunk_size = __le16_to_cpu(map->blocks_per_strip) << 9;
|
||||
this->array.state = !vol->dirty;
|
||||
this->container_member = i;
|
||||
if (map->map_state == IMSM_T_STATE_UNINITIALIZED || dev->vol.dirty)
|
||||
this->resync_start = 0;
|
||||
else
|
||||
this->resync_start = ~0ULL;
|
||||
|
||||
strncpy(this->name, (char *) dev->volume, MAX_RAID_SERIAL_LEN);
|
||||
this->name[MAX_RAID_SERIAL_LEN] = 0;
|
||||
|
||||
|
|
1
sysfs.c
1
sysfs.c
|
@ -325,6 +325,7 @@ int sysfs_set_array(struct mdinfo *sra,
|
|||
rv |= sysfs_set_num(sra, NULL, "chunk_size", info->array.chunk_size);
|
||||
rv |= sysfs_set_num(sra, NULL, "layout", info->array.layout);
|
||||
rv |= sysfs_set_num(sra, NULL, "component_size", info->component_size);
|
||||
rv |= sysfs_set_num(sra, NULL, "resync_start", info->resync_start);
|
||||
sra->array = info->array;
|
||||
return rv;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue