]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super1.c
Remove mon_pipe for communicating from monitor to manager
[thirdparty/mdadm.git] / super1.c
index bebd5f961f2e2d8079e57f5f07ceb8d468e90483..9c712fc4af515ec50831a7831d334b086d2afe77 100644 (file)
--- a/super1.c
+++ b/super1.c
@@ -493,7 +493,7 @@ static void getinfo_super1(struct supertype *st, struct mdinfo *info)
        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);
@@ -531,6 +531,7 @@ static void getinfo_super1(struct supertype *st, struct mdinfo *info)
                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);
 
@@ -696,7 +697,7 @@ static int init_super1(struct supertype *st, mdu_array_info_t *info,
        memset(sb, 0, 1024);
 
        st->sb = sb;
-       if (info->major_version == -1) {
+       if (info == NULL) {
                /* zeroing superblock */
                return 0;
        }
@@ -788,6 +789,9 @@ static void add_to_super1(struct supertype *st, mdu_disk_info_t *dk,
        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;
@@ -1064,6 +1068,9 @@ static int load_super1(struct supertype *st, int fd, char *devname)
 
        free_super1(st);
 
+       if (st->subarray[0])
+               return 1;
+
        if (st->ss == NULL || st->minor_version == -1) {
                int bestvers = -1;
                struct supertype tst;
@@ -1501,7 +1508,6 @@ struct superswitch super1 = {
        .write_bitmap = write_bitmap1,
        .free_super = free_super1,
        .validate_geometry = validate_geometry1,
-       .major = 1,
 #if __BYTE_ORDER == BIG_ENDIAN
        .swapuuid = 0,
 #else