]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Build.c
sysfs: Use the presence of /sys/block/<dev>/md as indicator of valid device
[thirdparty/mdadm.git] / Build.c
diff --git a/Build.c b/Build.c
index da64dc8915f42e3feb1b3f62887c01f85dae7f7f..691dd6f954f5ca6b23df0644780061c60633abf3 100644 (file)
--- a/Build.c
+++ b/Build.c
@@ -56,6 +56,10 @@ int Build(char *mddev, struct mddev_dev *devlist,
        int uuid[4] = {0,0,0,0};
        struct map_ent *map = NULL;
 
+       if (s->level == UnSet) {
+               pr_err("a RAID level is needed to Build an array.\n");
+               return 1;
+       }
        /* scan all devices, make sure they really are block devices */
        for (dv = devlist; dv; dv=dv->next) {
                subdevs++;
@@ -144,8 +148,8 @@ int Build(char *mddev, struct mddev_dev *devlist,
                        s->chunk = 64;
                array.chunk_size = s->chunk*1024;
                array.layout = s->layout;
-               if (ioctl(mdfd, SET_ARRAY_INFO, &array)) {
-                       pr_err("SET_ARRAY_INFO failed for %s: %s\n",
+               if (md_set_array_info(mdfd, &array)) {
+                       pr_err("md_set_array_info() failed for %s: %s\n",
                                mddev, strerror(errno));
                        goto abort;
                }
@@ -192,7 +196,7 @@ int Build(char *mddev, struct mddev_dev *devlist,
                        disk.number = i;
                        disk.raid_disk = i;
                        disk.state = (1<<MD_DISK_SYNC) | (1<<MD_DISK_ACTIVE);
-                       if (dv->writemostly == 1)
+                       if (dv->writemostly == FlagSet)
                                disk.state |= 1<<MD_DISK_WRITEMOSTLY;
                        disk.major = major(stb.st_rdev);
                        disk.minor = minor(stb.st_rdev);
@@ -254,8 +258,7 @@ int Build(char *mddev, struct mddev_dev *devlist,
                        pr_err("RUN_ARRAY failed: %s\n",
                                strerror(errno));
                        if (s->chunk & (s->chunk-1)) {
-                               cont_err("Problem may be that chunk size"
-                                        " is not a power of 2\n");
+                               cont_err("Problem may be that chunk size is not a power of 2\n");
                        }
                        goto abort;
                }