]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - super1.c
Assemble: add support for RAID0 layouts.
[thirdparty/mdadm.git] / super1.c
index cedbb53b4f2ef8dbe6a7aa5aee3ba01a3a645990..e0d80be1e5dfa22e3358b5bd1274e85719f08938 100644 (file)
--- a/super1.c
+++ b/super1.c
@@ -1550,7 +1550,17 @@ static int update_super1(struct supertype *st, struct mdinfo *info,
                sb->devflags |= FailFast1;
        else if (strcmp(update, "nofailfast") == 0)
                sb->devflags &= ~FailFast1;
-       else
+       else if (strcmp(update, "layout-original") == 0 ||
+                strcmp(update, "layout-alternate") == 0) {
+               if (__le32_to_cpu(sb->level) != 0) {
+                       pr_err("%s: %s only supported for RAID0\n",
+                              devname?:"", update);
+                       rv = -1;
+               } else {
+                       sb->feature_map |= __cpu_to_le32(MD_FEATURE_RAID0_LAYOUT);
+                       sb->layout = __cpu_to_le32(update[7] == 'o' ? 1 : 2);
+               }
+       } else
                rv = -1;
 
        sb->sb_csum = calc_sb_1_csum(sb);