X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=mdassemble.c;h=674be11f45e0ca3c527aaf4b9579dd2f84d6bf46;hb=0c78849f2bde13309f5df7130627f8589024a266;hp=43aed3c8377e1a2695d7be483f28157b93447601;hpb=b5e64645037e99b5f05c9499b27b422ae60d23a9;p=thirdparty%2Fmdadm.git diff --git a/mdassemble.c b/mdassemble.c index 43aed3c8..674be11f 100644 --- a/mdassemble.c +++ b/mdassemble.c @@ -1,7 +1,7 @@ /* * mdassemble - assemble Linux "md" devices aka RAID arrays. * - * Copyright (C) 2001-2002 Neil Brown + * Copyright (C) 2001-2009 Neil Brown * Copyright (C) 2003 Luca Berra * * @@ -20,84 +20,71 @@ * 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" #include "md_p.h" -/* from readme.c */ -mapping_t pers[] = { - { "linear", -1}, - { "raid0", 0}, - { "0", 0}, - { "stripe", 0}, - { "raid1", 1}, - { "1", 1}, - { "mirror", 1}, - { "raid4", 4}, - { "4", 4}, - { "raid5", 5}, - { "5", 5}, - { "multipath", -4}, - { "mp", -4}, - { "raid6", 6}, - { "6", 6}, - { "raid10", 10}, - { "10", 10}, - { NULL, 0} -}; - #ifndef MDASSEMBLE_AUTO -/* from mdadm.c */ -int open_mddev(char *dev, int autof/*unused */) +/* from mdopen.c */ +int open_mddev(char *dev, int report_errors/*unused*/) { - int mdfd = open(dev, O_RDWR, 0); + int mdfd = open(dev, O_RDWR); if (mdfd < 0) - fprintf(stderr, Name ": error opening %s: %s\n", + pr_err("error opening %s: %s\n", dev, strerror(errno)); else if (md_get_version(mdfd) <= 0) { - fprintf(stderr, Name ": %s does not appear to be an md device\n", + pr_err("%s does not appear to be an md device\n", dev); close(mdfd); mdfd = -1; } return mdfd; } +int create_mddev(char *dev, char *name, int autof/*unused*/, int trustworthy, + char *chosen) +{ + return open_mddev(dev, 0); +} #endif +int map_update(struct map_ent **mpp, char *devnm, char *metadata, + int *uuid, char *path) +{ + return 0; +} +struct map_ent *map_by_name(struct map_ent **mpp, char *name) +{ + return NULL; +} +int map_lock(struct map_ent **melp){return 0;} +void map_unlock(struct map_ent **melp){} +struct map_ent *map_by_uuid(struct map_ent **map, int uuid[4]){return NULL;} -char *configfile = NULL; int rv; int mdfd = -1; -int runstop = 0; -int readonly = 0; -int verbose = 0; -int force = 0; -int main() { - mddev_ident_t array_list = conf_get_ident(configfile, NULL); +int main(int argc, char *argv[]) +{ + struct mddev_ident *array_list = conf_get_ident(NULL); + struct context c = { .freeze_reshape = 1 }; if (!array_list) { - fprintf(stderr, Name ": No arrays found in config file\n"); + pr_err("No arrays found in config file\n"); rv = 1; } else for (; array_list; array_list = array_list->next) { mdu_array_info_t array; - mdfd = open_mddev(array_list->devname, array_list->autof); - if (mdfd < 0) { - rv |= 1; + if (strcasecmp(array_list->devname, "") == 0) continue; - } - if (ioctl(mdfd, GET_ARRAY_INFO, &array)>=0) - /* already assembled, skip */ + mdfd = open_mddev(array_list->devname, 0); + if (mdfd >= 0 && ioctl(mdfd, GET_ARRAY_INFO, &array) == 0) { + rv |= Manage_ro(array_list->devname, mdfd, -1); /* make it readwrite */ continue; - rv |= Assemble(array_list->devname, mdfd, - array_list, configfile, - NULL, - readonly, runstop, NULL, verbose, force); + } + if (mdfd >= 0) + close(mdfd); + rv |= Assemble(array_list->st, array_list->devname, + array_list, NULL, &c); } + return rv; }