]> git.ipfire.org Git - thirdparty/mdadm.git/blobdiff - Manage.c
Replace various load_super calls with load_container
[thirdparty/mdadm.git] / Manage.c
index d9530a489e34c8f613b1e4ee9533c3ec5cf040a5..fa300c7436eb05fa0340b0cd579b4a76a203dd34 100644 (file)
--- a/Manage.c
+++ b/Manage.c
@@ -324,7 +324,7 @@ int Manage_resize(char *devname, int fd, long long size, int raid_disks)
 }
 
 int Manage_subdevs(char *devname, int fd,
-                  mddev_dev_t devlist, int verbose, int test)
+                  struct mddev_dev *devlist, int verbose, int test)
 {
        /* do something to each dev.
         * devmode can be
@@ -340,15 +340,16 @@ int Manage_subdevs(char *devname, int fd,
         * For 'f' and 'r', the device can also be a kernel-internal
         * name such as 'sdb'.
         */
-       mddev_dev_t add_devlist = NULL;
+       struct mddev_dev *add_devlist = NULL;
        mdu_array_info_t array;
        mdu_disk_info_t disc;
        unsigned long long array_size;
-       mddev_dev_t dv, next = NULL;
+       struct mddev_dev *dv, *next = NULL;
        struct stat stb;
        int j, jnext = 0;
        int tfd = -1;
        struct supertype *st, *tst;
+       char *subarray = NULL;
        int duuid[4];
        int ouuid[4];
        int lfd = -1;
@@ -369,7 +370,7 @@ int Manage_subdevs(char *devname, int fd,
        if (array_size <= 0)
                array_size = array.size * 2;
 
-       tst = super_by_fd(fd);
+       tst = super_by_fd(fd, &subarray);
        if (!tst) {
                fprintf(stderr, Name ": unsupport array - version %d.%d\n",
                        array.major_version, array.minor_version);
@@ -548,7 +549,7 @@ int Manage_subdevs(char *devname, int fd,
                        return 1;
                case 'a':
                        /* add the device */
-                       if (tst->subarray[0]) {
+                       if (subarray) {
                                fprintf(stderr, Name ": Cannot add disks to a"
                                        " \'member\' array, perform this"
                                        " operation on the parent container\n");
@@ -608,7 +609,7 @@ int Manage_subdevs(char *devname, int fd,
                                if (tst->sb)
                                        /* already loaded */;
                                else if (tst->ss->external) {
-                                       tst->ss->load_super(tst, fd, NULL);
+                                       tst->ss->load_container(tst, fd, NULL);
                                } else for (j = 0; j < tst->max_devs; j++) {
                                        char *dev;
                                        int dfd;
@@ -879,7 +880,7 @@ int Manage_subdevs(char *devname, int fd,
 
                case 'r':
                        /* hot remove */
-                       if (tst->subarray[0]) {
+                       if (subarray) {
                                fprintf(stderr, Name ": Cannot remove disks from a"
                                        " \'member\' array, perform this"
                                        " operation on the parent container\n");
@@ -1031,22 +1032,14 @@ int autodetect(void)
        return rv;
 }
 
-int Update_subarray(char *dev, char *subarray, char *update, mddev_ident_t ident, int quiet)
+int Update_subarray(char *dev, char *subarray, char *update, struct mddev_ident *ident, int quiet)
 {
        struct supertype supertype, *st = &supertype;
        int fd, rv = 2;
 
        memset(st, 0, sizeof(*st));
-       if (snprintf(st->subarray, sizeof(st->subarray), "%s", subarray) >=
-           (signed)sizeof(st->subarray)) {
-               if (!quiet)
-                       fprintf(stderr,
-                               Name ": Input overflow for subarray '%s' > %zu bytes\n",
-                               subarray, sizeof(st->subarray) - 1);
-               return 2;
-       }
 
-       fd = open_subarray(dev, st, quiet);
+       fd = open_subarray(dev, subarray, st, quiet);
        if (fd < 0)
                return 2;
 
@@ -1061,7 +1054,7 @@ int Update_subarray(char *dev, char *subarray, char *update, mddev_ident_t ident
        if (mdmon_running(st->devnum))
                st->update_tail = &st->updates;
 
-       rv = st->ss->update_subarray(st, update, ident);
+       rv = st->ss->update_subarray(st, subarray, update, ident);
 
        if (rv) {
                if (!quiet)