summaryrefslogtreecommitdiff
path: root/mdadm.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdadm.c')
-rw-r--r--mdadm.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/mdadm.c b/mdadm.c
index 846bc96..f290c29 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -42,6 +42,7 @@ int main(int argc, char *argv[])
int chunk = 0;
long long size = -1;
long long array_size = -1;
+ long long data_offset = -1;
int level = UnSet;
int layout = UnSet;
char *layout_str = NULL;
@@ -466,6 +467,21 @@ int main(int argc, char *argv[])
}
continue;
+ case O(CREATE,DataOffset):
+ case O(GROW,DataOffset):
+ if (data_offset >= 0) {
+ fprintf(stderr, Name ": data-offset may only be specified one. "
+ "Second value is %s.\n", optarg);
+ exit(2);
+ }
+ data_offset = parse_size(optarg);
+ if (data_offset < 0) {
+ fprintf(stderr, Name ": invalid data-offset: %s\n",
+ optarg);
+ exit(2);
+ }
+ continue;
+
case O(GROW,'l'):
case O(CREATE,'l'):
case O(BUILD,'l'): /* set raid level*/
@@ -1449,7 +1465,8 @@ int main(int argc, char *argv[])
raiddisks, sparedisks, ident.name, homehost,
ident.uuid_set ? ident.uuid : NULL,
devs_found-1, devlist->next, runstop, verbose-quiet, force, assume_clean,
- bitmap_file, bitmap_chunk, write_behind, delay, autof);
+ bitmap_file, bitmap_chunk, write_behind, delay, autof,
+ data_offset);
break;
case MISC:
if (devmode == 'E') {
@@ -1705,6 +1722,7 @@ int main(int argc, char *argv[])
|| chunk != 0 || level != UnSet) {
rv = Grow_reshape(devlist->devname, mdfd, quiet, backup_file,
size, level, layout_str, chunk, raiddisks,
+ data_offset,
devlist->next,
assume_clean, force);
} else if (array_size < 0)