diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-12-21 11:26:21 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-12-21 11:26:21 -0700 |
commit | d23534e4646313a67296b295666d165a87bb2c92 (patch) | |
tree | d99d9b4beb269ac0f8b1bbe6c0ca3cfab97f5c4a | |
parent | b7528a20cca58c973771d94d7d2b8ef74bcf582d (diff) | |
download | mdadm-d23534e4646313a67296b295666d165a87bb2c92.tar.gz mdadm-d23534e4646313a67296b295666d165a87bb2c92.tar.xz mdadm-d23534e4646313a67296b295666d165a87bb2c92.zip |
Teach sysfs_add_disk() callers to use ->recovery_start versus 'insync' parameter
Also fixup 'in_sync' versus 'insync' typo.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r-- | Assemble.c | 2 | ||||
-rw-r--r-- | Manage.c | 3 | ||||
-rw-r--r-- | managemon.c | 2 | ||||
-rw-r--r-- | mdadm.h | 3 | ||||
-rw-r--r-- | super-ddf.c | 2 | ||||
-rw-r--r-- | super-intel.c | 2 | ||||
-rw-r--r-- | sysfs.c | 6 | ||||
-rw-r--r-- | util.c | 7 |
8 files changed, 17 insertions, 10 deletions
@@ -1286,7 +1286,7 @@ int assemble_container_content(struct supertype *st, int mdfd, sysfs_free(sra); for (dev = content->devs; dev; dev = dev->next) - if (sysfs_add_disk(content, dev, 1) == 0) + if (sysfs_add_disk(content, dev) == 0) working++; else if (errno == EEXIST) preexist++; @@ -696,7 +696,8 @@ int Manage_subdevs(char *devname, int fd, tst->ss->getinfo_super(tst, &new_mdi); new_mdi.disk.major = disc.major; new_mdi.disk.minor = disc.minor; - if (sysfs_add_disk(sra, &new_mdi, 0) != 0) { + new_mdi.recovery_start = 0; + if (sysfs_add_disk(sra, &new_mdi) != 0) { fprintf(stderr, Name ": add new device to external metadata" " failed for %s\n", dv->devname); close(container_fd); diff --git a/managemon.c b/managemon.c index e335077..3a20e2b 100644 --- a/managemon.c +++ b/managemon.c @@ -410,7 +410,7 @@ static void manage_member(struct mdstat_ent *mdstat, newd = malloc(sizeof(*newd)); if (!newd) continue; - if (sysfs_add_disk(&newa->info, d, 0) < 0) { + if (sysfs_add_disk(&newa->info, d) < 0) { free(newd); continue; } @@ -385,8 +385,7 @@ extern int sysfs_get_str(struct mdinfo *sra, struct mdinfo *dev, char *name, char *val, int size); extern int sysfs_set_safemode(struct mdinfo *sra, unsigned long ms); extern int sysfs_set_array(struct mdinfo *info, int vers); -extern int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd, - int in_sync); +extern int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd); extern int sysfs_disk_to_scsi_id(int fd, __u32 *id); extern int sysfs_unique_holder(int devnum, long rdev); extern int load_sys(char *path, char *buf); diff --git a/super-ddf.c b/super-ddf.c index 8c3f4be..14f8330 100644 --- a/super-ddf.c +++ b/super-ddf.c @@ -2968,6 +2968,7 @@ static struct mdinfo *container_content_ddf(struct supertype *st) dev->disk.minor = d->minor; dev->disk.raid_disk = i; dev->disk.state = (1<<MD_DISK_SYNC)|(1<<MD_DISK_ACTIVE); + dev->recovery_start = MaxSector; dev->events = __be32_to_cpu(ddf->primary.seq); dev->data_offset = __be64_to_cpu(vc->lba_offset[i]); @@ -3547,6 +3548,7 @@ static struct mdinfo *ddf_activate_spare(struct active_array *a, di->disk.major = dl->major; di->disk.minor = dl->minor; di->disk.state = 0; + di->recovery_start = 0; di->data_offset = pos; di->component_size = a->info.component_size; di->container_member = dl->pdnum; diff --git a/super-intel.c b/super-intel.c index 4bb1990..9f879c5 100644 --- a/super-intel.c +++ b/super-intel.c @@ -3876,6 +3876,7 @@ static struct mdinfo *container_content_imsm(struct supertype *st) info_d->disk.major = d->major; info_d->disk.minor = d->minor; info_d->disk.raid_disk = slot; + info_d->recovery_start = MaxSector; this->array.working_disks++; @@ -4454,6 +4455,7 @@ static struct mdinfo *imsm_activate_spare(struct active_array *a, di->disk.major = dl->major; di->disk.minor = dl->minor; di->disk.state = 0; + di->recovery_start = 0; di->data_offset = __le32_to_cpu(map->pba_of_lba0); di->component_size = a->info.component_size; di->container_member = inst; @@ -572,7 +572,7 @@ int sysfs_set_array(struct mdinfo *info, int vers) return rv; } -int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd, int in_sync) +int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd) { char dv[100]; char nm[100]; @@ -598,11 +598,11 @@ int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd, int in_sync) rv = sysfs_set_num(sra, sd, "offset", sd->data_offset); rv |= sysfs_set_num(sra, sd, "size", (sd->component_size+1) / 2); if (sra->array.level != LEVEL_CONTAINER) { - if (in_sync) + if (sd->recovery_start == MaxSector) /* This can correctly fail if array isn't started, * yet, so just ignore status for now. */ - sysfs_set_str(sra, sd, "state", "in_sync"); + sysfs_set_str(sra, sd, "state", "insync"); rv |= sysfs_set_num(sra, sd, "slot", sd->disk.raid_disk); } return rv; @@ -1162,8 +1162,11 @@ int add_disk(int mdfd, struct supertype *st, int rv; #ifndef MDASSEMBLE if (st->ss->external) { - rv = sysfs_add_disk(sra, info, - info->disk.state & (1<<MD_DISK_SYNC)); + if (info->disk.state & (1<<MD_DISK_SYNC)) + info->recovery_start = MaxSector; + else + info->recovery_start = 0; + rv = sysfs_add_disk(sra, info); if (! rv) { struct mdinfo *sd2; for (sd2 = sra->devs; sd2; sd2=sd2->next) |