]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
Discard st->container_member
authorNeil Brown <neilb@suse.de>
Mon, 26 May 2008 23:18:56 +0000 (09:18 +1000)
committerNeil Brown <neilb@suse.de>
Mon, 26 May 2008 23:18:56 +0000 (09:18 +1000)
'container_member' isn't really a well defined concept.
Each metadata might enumerate members differently, so just
let each format /mdX/YYYY as appropriate.

Create.c
Incremental.c
mdadm.h
super-ddf.c

index b7f0914329b79940db80577b615e3a73e6ea4052..68a423014786e7e74d23b30fb1d8a78744f0b7b1 100644 (file)
--- a/Create.c
+++ b/Create.c
@@ -541,15 +541,11 @@ int Create(struct supertype *st, char *mddev, int mdfd,
 
        if (st->ss->external) {
                char ver[100];
-               if (st->ss->external == 1)
-                       /* container */
-                       strcat(strcpy(ver, "external:"),
-                              info.text_version);
-               else {
+               strcat(strcpy(ver, "external:"),
+                      info.text_version);
+               if (st->ss->external == 2) {
                        /* member */
-                       sprintf(ver, "external:/%s/%d",
-                               devnum2devname(st->container_dev),
-                               st->container_member);
+
                        /* When creating a member, we need to be careful
                         * to negotiate with mdmon properly.
                         * If it is already running, we cannot write to
index 5c582bb304e7cf908fa3066e99c068856f42f70f..d3f93a67ac2d93a11e63d1e07011a971cfef5dd6 100644 (file)
@@ -830,7 +830,7 @@ int Incremental_container(struct supertype *st, char *devname, int verbose,
 
                sra = sysfs_read(mdfd, 0, 0);
 
-               sprintf(ver, "external:/%s/%d", mdname, ra->container_member);
+               sprintf(ver, "external:%s", ra->text_version);
                sysfs_set_str(sra, NULL, "metadata_version", ver);
 
                sysfs_set_array(sra, ra);
diff --git a/mdadm.h b/mdadm.h
index 73f22ae47481ebf1a74e2165c4384359ea759d98..f795b4a4581e23fb5c5e8f70d01c2fc4661e3316 100644 (file)
--- a/mdadm.h
+++ b/mdadm.h
@@ -154,7 +154,10 @@ struct mdinfo {
        int                     cache_size; /* size of raid456 stripe cache*/
        int                     mismatch_cnt;
        char                    text_version[50];
-       int container_member; /* for assembling external-metatdata arrays */
+
+       int container_member; /* for assembling external-metatdata arrays
+                              * This is to be used internally by metadata
+                              * handler only */
 
        char            sys_name[20];
        struct mdinfo *devs;
@@ -444,7 +447,6 @@ struct supertype {
        int minor_version;
        int max_devs;
        int container_dev;    /* devnum of container */
-       int container_member; /* numerical position in container */
        void *sb;
        void *info;
 
index fe76509c9fcfedb92819f914019ec72f4b685b5b..e8082b536738d515e024c1ab2155e06210ff2d6c 100644 (file)
@@ -405,6 +405,7 @@ struct ddf_super {
                                              * the lba table */
                struct vd_config conf;
        } *conflist, *newconf;
+       int conf_num; /* Index into 'virt' of entry matching 'newconf' */
        struct dl {
                struct dl       *next;
                struct disk_data disk;
@@ -1162,7 +1163,7 @@ static void uuid_from_super_ddf(struct supertype *st, int uuid[4])
         * The first 16 bytes of the sha1 of these is used.
         */
        struct ddf_super *ddf = st->sb;
-       struct vd_config *vd = find_vdcr(ddf, st->container_member);
+       struct vd_config *vd = find_vdcr(ddf, ddf->conf_num);
 
        if (!vd)
                memset(uuid, 0, sizeof (uuid));
@@ -1688,7 +1689,7 @@ static int init_super_ddf_bvd(struct supertype *st,
                return 0;
        }
        ve = &ddf->virt->entries[venum];
-       st->container_member = venum;
+       ddf->conf_num = venum;
 
        /* A Virtual Disk GUID contains the T10 Vendor ID, controller type,
         * timestamp, random number
@@ -2086,7 +2087,6 @@ int validate_geometry_ddf(struct supertype *st,
                if (load_super_ddf_all(st, cfd, (void **)&ddf, NULL, 1) == 0) {
                        st->sb = ddf;
                        st->container_dev = fd2devnum(cfd);
-                       st->container_member = 27; // FIXME
                        close(cfd);
                        return st->ss->validate_geometry(st, level, layout,
                                                         raiddisks, chunk, size,