Make sure resync_start is initialised properly and maintained properly
Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
120f767760
commit
103f2410ec
8
Create.c
8
Create.c
|
@ -448,11 +448,13 @@ int Create(struct supertype *st, char *mddev, int mdfd,
|
|||
( level <= 0 )
|
||||
||
|
||||
assume_clean
|
||||
)
|
||||
) {
|
||||
info.array.state = 1; /* clean, but one+ drive will be missing*/
|
||||
else
|
||||
info.resync_start = ~0ULL;
|
||||
} else {
|
||||
info.array.state = 0; /* not clean, but no errors */
|
||||
|
||||
info.resync_start = 0;
|
||||
}
|
||||
if (level == 10) {
|
||||
/* for raid10, the bitmap size is the capacity of the array,
|
||||
* which is array.size * raid_disks / ncopies;
|
||||
|
|
|
@ -379,7 +379,7 @@ static void manage_new(struct mdstat_ent *mdstat,
|
|||
new->action_fd = sysfs_open(new->devnum, NULL, "sync_action");
|
||||
new->info.state_fd = sysfs_open(new->devnum, NULL, "array_state");
|
||||
new->resync_start_fd = sysfs_open(new->devnum, NULL, "resync_start");
|
||||
new->resync_start = 0;
|
||||
get_resync_start(new);
|
||||
dprintf("%s: inst: %d action: %d state: %d\n", __func__, atoi(inst),
|
||||
new->action_fd, new->info.state_fd);
|
||||
|
||||
|
|
1
mdmon.h
1
mdmon.h
|
@ -56,6 +56,7 @@ void do_monitor(struct supertype *container);
|
|||
void do_manager(struct supertype *container);
|
||||
|
||||
int read_dev_state(int fd);
|
||||
int get_resync_start(struct active_array *a);
|
||||
|
||||
struct mdstat_ent *mdstat_read(int hold, int start);
|
||||
|
||||
|
|
|
@ -48,7 +48,7 @@ static int read_attr(char *buf, int len, int fd)
|
|||
}
|
||||
|
||||
|
||||
static int get_resync_start(struct active_array *a)
|
||||
int get_resync_start(struct active_array *a)
|
||||
{
|
||||
char buf[30];
|
||||
int n;
|
||||
|
|
|
@ -1286,6 +1286,8 @@ static void getinfo_super_ddf_bvd(struct supertype *st, struct mdinfo *info)
|
|||
// info->disk.raid_disk = find refnum in the table and use index;
|
||||
// info->disk.state = ???;
|
||||
|
||||
info->container_member = ddf->currentconf->vcnum;
|
||||
|
||||
info->resync_start = 0;
|
||||
if (!(ddf->virt->entries[info->container_member].state
|
||||
& DDF_state_inconsistent) &&
|
||||
|
|
Loading…
Reference in New Issue