summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Build.c8
-rw-r--r--mdadm.c6
-rw-r--r--mdadm.h3
3 files changed, 10 insertions, 7 deletions
diff --git a/Build.c b/Build.c
index 1e213ce..21fe2a5 100644
--- a/Build.c
+++ b/Build.c
@@ -36,7 +36,8 @@
int Build(char *mddev, int mdfd, int chunk, int level, int layout,
int raiddisks,
mddev_dev_t devlist, int assume_clean,
- char *bitmap_file, int bitmap_chunk, int write_behind, int delay, int verbose)
+ char *bitmap_file, int bitmap_chunk, int write_behind, int delay,
+ int verbose, unsigned long long size)
{
/* Build a linear or raid0 arrays without superblocks
* We cannot really do any checks, we just do it.
@@ -57,7 +58,6 @@ int Build(char *mddev, int mdfd, int chunk, int level, int layout,
int subdevs = 0, missing_disks = 0;
mddev_dev_t dv;
int bitmap_fd;
- unsigned long long size = ~0ULL;
unsigned long long bitmapsize;
/* scan all devices, make sure they really are block devices */
@@ -119,7 +119,7 @@ int Build(char *mddev, int mdfd, int chunk, int level, int layout,
if (vers >= 9000) {
mdu_array_info_t array;
array.level = level;
- array.size = 0;
+ array.size = size;
array.nr_disks = raiddisks;
array.raid_disks = raiddisks;
array.md_minor = 0;
@@ -178,7 +178,7 @@ int Build(char *mddev, int mdfd, int chunk, int level, int layout,
(size == 0 || dsize < size))
size = dsize;
close(fd);
- if (vers>= 9000) {
+ if (vers >= 9000) {
mdu_disk_info_t disk;
disk.number = i;
disk.raid_disk = i;
diff --git a/mdadm.c b/mdadm.c
index 6609bf2..e889b9c 100644
--- a/mdadm.c
+++ b/mdadm.c
@@ -367,7 +367,8 @@ int main(int argc, char *argv[])
case O(GROW,'z'):
- case O(CREATE,'z'): /* size */
+ case O(CREATE,'z'):
+ case O(BUILD,'z'): /* size */
if (size >= 0) {
fprintf(stderr, Name ": size may only be specified once. "
"Second value is %s.\n", optarg);
@@ -1161,7 +1162,8 @@ int main(int argc, char *argv[])
}
rv = Build(devlist->devname, mdfd, chunk, level, layout,
raiddisks, devlist->next, assume_clean,
- bitmap_file, bitmap_chunk, write_behind, delay, verbose-quiet);
+ bitmap_file, bitmap_chunk, write_behind, delay,
+ verbose-quiet, size);
break;
case CREATE:
if (delay == 0) delay = DEFAULT_BITMAP_DELAY;
diff --git a/mdadm.h b/mdadm.h
index 0d5c721..0eb8f39 100644
--- a/mdadm.h
+++ b/mdadm.h
@@ -443,7 +443,8 @@ extern int Assemble(struct supertype *st, char *mddev, int mdfd,
extern int Build(char *mddev, int mdfd, int chunk, int level, int layout,
int raiddisks,
mddev_dev_t devlist, int assume_clean,
- char *bitmap_file, int bitmap_chunk, int write_behind, int delay, int verbose);
+ char *bitmap_file, int bitmap_chunk, int write_behind,
+ int delay, int verbose, unsigned long long size);
extern int Create(struct supertype *st, char *mddev, int mdfd,