]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - sysfs.c
imsm: Allow create RAID volume with link to container
[thirdparty/mdadm.git] / sysfs.c
diff --git a/sysfs.c b/sysfs.c
index 68ddd5f420c6e51318f7def7ccd8ea5a7026291d..df6fdda35cd829e35be45a22c0d203a1ee99b019 100644 (file)
--- a/sysfs.c
+++ b/sysfs.c
@@ -307,6 +307,7 @@ struct mdinfo *sysfs_read(int fd, char *devnm, unsigned long options)
                dev->disk.raid_disk = strtoul(buf, &ep, 10);
                if (*ep) dev->disk.raid_disk = -1;
 
+               sra->array.nr_disks++;
                strcpy(dbase, "block/dev");
                if (load_sys(fname, buf, sizeof(buf))) {
                        /* assume this is a stale reference to a hot
@@ -315,7 +316,6 @@ struct mdinfo *sysfs_read(int fd, char *devnm, unsigned long options)
                        free(dev);
                        continue;
                }
-               sra->array.nr_disks++;
                sscanf(buf, "%d:%d", &dev->disk.major, &dev->disk.minor);
 
                /* special case check for block devices that can go 'offline' */
@@ -709,8 +709,8 @@ int sysfs_set_array(struct mdinfo *info, int vers)
                if (sysfs_set_str(info, NULL, "consistency_policy",
                                  map_num(consistency_policies,
                                          info->consistency_policy))) {
-                       pr_err("This kernel does not support PPL\n");
-                       return 1;
+                       pr_err("This kernel does not support PPL. Falling back to consistency-policy=resync.\n");
+                       info->consistency_policy = CONSISTENCY_POLICY_RESYNC;
                }
        }
 
@@ -745,7 +745,7 @@ int sysfs_add_disk(struct mdinfo *sra, struct mdinfo *sd, int resume)
        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 (sd->consistency_policy == CONSISTENCY_POLICY_PPL) {
+               if (sra->consistency_policy == CONSISTENCY_POLICY_PPL) {
                        rv |= sysfs_set_num(sra, sd, "ppl_sector", sd->ppl_sector);
                        rv |= sysfs_set_num(sra, sd, "ppl_size", sd->ppl_size);
                }