]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super1.c
Incremental: support replacement devices.
[thirdparty/mdadm.git] / super1.c
index dd6b9be1e0e82a65d1d14abad10a8ebe6b13c092..5bb1f0143790122dd208c4d2b4bc8db498e13ba9 100644 (file)
--- a/super1.c
+++ b/super1.c
@@ -766,6 +766,12 @@ static void getinfo_super1(struct supertype *st, struct mdinfo *info, char *map)
        strncpy(info->name, sb->set_name, 32);
        info->name[32] = 0;
 
+       if ((__le32_to_cpu(sb->feature_map)&MD_FEATURE_REPLACEMENT)) {
+               info->disk.state &= ~(1 << MD_DISK_SYNC);
+               info->disk.state |=  1 << MD_DISK_REPLACEMENT;
+       }
+
+
        if (sb->feature_map & __le32_to_cpu(MD_FEATURE_RECOVERY_OFFSET))
                info->recovery_start = __le32_to_cpu(sb->recovery_offset);
        else
@@ -847,7 +853,7 @@ static int update_super1(struct supertype *st, struct mdinfo *info,
        } else if (strcmp(update, "assemble")==0) {
                int d = info->disk.number;
                int want;
-               if (info->disk.state == 6)
+               if (info->disk.state & (1<<MD_DISK_ACTIVE))
                        want = info->disk.raid_disk;
                else
                        want = 0xFFFF;