}
#ifndef MDASSEMBLE
-static void add_to_super_imsm_volume(struct supertype *st, mdu_disk_info_t *dk,
+static int add_to_super_imsm_volume(struct supertype *st, mdu_disk_info_t *dk,
int fd, char *devname)
{
struct intel_super *super = st->sb;
break;
if (!dl || ! (dk->state & (1<<MD_DISK_SYNC)))
- return;
+ return 1;
/* add a pristine spare to the metadata */
if (dl->index < 0) {
sum = __gen_imsm_checksum(mpb);
mpb->family_num = __cpu_to_le32(sum);
}
+
+ return 0;
}
-static void add_to_super_imsm(struct supertype *st, mdu_disk_info_t *dk,
+static int add_to_super_imsm(struct supertype *st, mdu_disk_info_t *dk,
int fd, char *devname)
{
struct intel_super *super = st->sb;
int rv;
struct stat stb;
- if (super->current_vol >= 0) {
- add_to_super_imsm_volume(st, dk, fd, devname);
- return;
- }
+ if (super->current_vol >= 0)
+ return add_to_super_imsm_volume(st, dk, fd, devname);
fstat(fd, &stb);
dd = malloc(sizeof(*dd));
if (!dd) {
fprintf(stderr,
Name ": malloc failed %s:%d.\n", __func__, __LINE__);
- abort();
+ return 1;
}
memset(dd, 0, sizeof(*dd));
dd->major = major(stb.st_rdev);
dd->next = super->disks;
super->disks = dd;
}
+
+ return 0;
}
static int store_imsm_mpb(int fd, struct intel_super *super);