'container_member' isn't really a well defined concept.
Each metadata might enumerate members differently, so just
let each format /mdX/YYYY as appropriate.
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
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);
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;
int minor_version;
int max_devs;
int container_dev; /* devnum of container */
- int container_member; /* numerical position in container */
void *sb;
void *info;
* 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;
* 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));
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
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,