X-Git-Url: http://git.ipfire.org/?p=thirdparty%2Fmdadm.git;a=blobdiff_plain;f=Build.c;h=7f3925864731bf63e0c1c1a10357a3476a95a2fe;hp=c92c6a985b947d819e11572dc8cd9053405546fe;hb=1e5c69836d4d0b6dcaef8fc187e6bf2841eb57f6;hpb=ad5bc697ad9bb52616c34b022fb014e890be6a2d diff --git a/Build.c b/Build.c index c92c6a98..7f392586 100644 --- a/Build.c +++ b/Build.c @@ -1,7 +1,7 @@ /* * mdadm - manage Linux "md" devices aka RAID arrays. * - * Copyright (C) 2001-2006 Neil Brown + * Copyright (C) 2001-2009 Neil Brown * * * This program is free software; you can redistribute it and/or modify @@ -19,12 +19,7 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * Author: Neil Brown - * Email: - * Paper: Neil Brown - * School of Computer Science and Engineering - * The University of New South Wales - * Sydney, 2052 - * Australia + * Email: */ #include "mdadm.h" @@ -36,7 +31,7 @@ int Build(char *mddev, 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, int autof) + int delay, int verbose, int autof, unsigned long long size) { /* Build a linear or raid0 arrays without superblocks * We cannot really do any checks, we just do it. @@ -57,7 +52,6 @@ int Build(char *mddev, 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; int mdfd; char chosen_name[1024]; @@ -124,6 +118,7 @@ int Build(char *mddev, int chunk, int level, int layout, map_unlock(&map); return 1; } + mddev = chosen_name; map_update(&map, fd2devnum(mdfd), "none", uuid, chosen_name); map_unlock(&map); @@ -134,7 +129,7 @@ int Build(char *mddev, 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; @@ -193,7 +188,7 @@ int Build(char *mddev, 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; @@ -280,6 +275,7 @@ int Build(char *mddev, int chunk, int level, int layout, if (verbose >= 0) fprintf(stderr, Name ": array %s built and started.\n", mddev); + wait_for(mddev, mdfd); close(mdfd); return 0;