Set 'metadata_version' for container_member in Incremental_container
From: Dan Williams <dan.j.williams@intel.com> Signed-off-by: Dan Williams <dan.j.williams@intel.com>
This commit is contained in:
parent
f352c54527
commit
5f2aace8eb
|
@ -717,6 +717,19 @@ int IncrementalScan(int verbose)
|
|||
return rv;
|
||||
}
|
||||
|
||||
static char *container2devname(char *devname)
|
||||
{
|
||||
int fd = open(devname, O_RDONLY);
|
||||
char *mdname = NULL;
|
||||
|
||||
if (fd > 0) {
|
||||
mdname = devnum2devname(fd2devnum(fd));
|
||||
close(fd);
|
||||
}
|
||||
|
||||
return mdname;
|
||||
}
|
||||
|
||||
int Incremental_container(struct supertype *st, char *devname, int verbose,
|
||||
int runstop, int autof)
|
||||
{
|
||||
|
@ -726,6 +739,12 @@ int Incremental_container(struct supertype *st, char *devname, int verbose,
|
|||
|
||||
struct mdinfo *list = st->ss->container_content(st);
|
||||
struct mdinfo *ra;
|
||||
char *mdname = container2devname(devname);
|
||||
|
||||
if (!mdname) {
|
||||
fprintf(stderr, Name": failed to determine device name\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
for (ra = list ; ra ; ra = ra->next) {
|
||||
struct mdinfo *sra;
|
||||
|
@ -736,6 +755,7 @@ int Incremental_container(struct supertype *st, char *devname, int verbose,
|
|||
int usepart = 1;
|
||||
char *n;
|
||||
int working = 0;
|
||||
char ver[100];
|
||||
|
||||
if ((autof&7) == 3 || (autof&7) == 5)
|
||||
usepart = 0;
|
||||
|
@ -769,6 +789,9 @@ 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);
|
||||
sysfs_set_str(sra, NULL, "metadata_version", ver);
|
||||
|
||||
sysfs_set_array(sra, ra);
|
||||
for (dev = ra->devs; dev; dev = dev->next) {
|
||||
char buf[20];
|
||||
|
|
1
mdadm.h
1
mdadm.h
|
@ -152,6 +152,7 @@ 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 */
|
||||
|
||||
char sys_name[20];
|
||||
struct mdinfo *devs;
|
||||
|
|
|
@ -2354,6 +2354,7 @@ static struct mdinfo *container_content_ddf(struct supertype *st)
|
|||
memset(this->uuid, 0, sizeof(this->uuid));
|
||||
this->component_size = __be64_to_cpu(vc->conf.blocks);
|
||||
this->array.size = this->component_size / 2;
|
||||
this->container_member = i;
|
||||
|
||||
mppe = __be16_to_cpu(ddf->anchor.max_primary_element_entries);
|
||||
for (i=0 ; i < mppe ; i++) {
|
||||
|
|
Loading…
Reference in New Issue