summaryrefslogtreecommitdiff
path: root/Build.c
diff options
context:
space:
mode:
authorPaul Clements <paul.clements@steeleye.com>2009-02-11 13:49:26 -0500
committerNeilBrown <neilb@suse.de>2009-04-21 15:36:13 +1000
commit25affb56b921041794abfb0774b615476d6ddb11 (patch)
treef9ed6f0522ef59a5eda668d0e22e09442a417428 /Build.c
parent388953d27c20476f84ca71546d6fd357e0230e25 (diff)
mdadm: allow build to use --size
This patch enables the --size parameter for build operations. Without this, if you have a raid1, for instance, where the 2 disks are not the exact same size, and you need to build the array but one of the disks is not available right at the moment (maybe it's USB and it's unplugged, or maybe it's a network disk and it's unavailable), then you have to play some weird games to get the array to size correctly (that is, to the size of the smaller of the two components or less). There may be other uses for this too... -- Paul Signed-off-by: NeilBrown <neilb@suse.de>
Diffstat (limited to 'Build.c')
-rw-r--r--Build.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/Build.c b/Build.c
index 1e213ce4..21fe2a51 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;