int role;
info->array.major_version = 1;
- info->array.minor_version = __le32_to_cpu(sb->feature_map);
+ info->array.minor_version = st->minor_version;
info->array.patch_version = 0;
info->array.raid_disks = __le32_to_cpu(sb->raid_disks);
info->array.level = __le32_to_cpu(sb->level);
info->disk.raid_disk = role;
}
info->events = __le64_to_cpu(sb->events);
+ sprintf(info->text_version, "1.%d", st->minor_version);
memcpy(info->uuid, sb->set_uuid, 16);
memset(sb, 0, 1024);
st->sb = sb;
- if (info->major_version == -1) {
+ if (info == NULL) {
/* zeroing superblock */
return 0;
}
else
*rp = 0xfffe;
+ sb->dev_number = __cpu_to_le32(dk->number);
+ sb->sb_csum = calc_sb_1_csum(sb);
+
dip = (struct devinfo **)&st->info;
while (*dip)
dip = &(*dip)->next;
for (di = st->info; di && ! rv ; di = di->next) {
if (di->disk.state == 1)
continue;
+ if (di->fd < 0)
+ continue;
Kill(di->devname, 0, 1, 1);
Kill(di->devname, 0, 1, 1);
- if (di->fd < 0) {
- fprintf(stderr,
- Name": Failed to open %s to write superblock\n",
- di->devname);
- return -1;
- }
sb->dev_number = __cpu_to_le32(di->disk.number);
if (di->disk.state & (1<<MD_DISK_WRITEMOSTLY))
sb->devflags |= __cpu_to_le32(WriteMostly1);
free_super1(st);
+ if (st->subarray[0])
+ return 1;
+
if (st->ss == NULL || st->minor_version == -1) {
int bestvers = -1;
struct supertype tst;
.write_bitmap = write_bitmap1,
.free_super = free_super1,
.validate_geometry = validate_geometry1,
- .major = 1,
#if __BYTE_ORDER == BIG_ENDIAN
.swapuuid = 0,
#else