diff options
author | Dan Williams <dan.j.williams@intel.com> | 2008-05-15 16:48:25 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-05-15 16:48:25 +1000 |
commit | 5f2aace8eba3b4d9c82ed520d0fdf0f5d2b990e6 (patch) | |
tree | 3c1bdc164c6d4f221b9a43afdf1cc8724707267f /Incremental.c | |
parent | f352c5452740659f651ff52c657ca95f01bce30a (diff) |
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>
Diffstat (limited to 'Incremental.c')
-rw-r--r-- | Incremental.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Incremental.c b/Incremental.c index 2e23677d..04e2e159 100644 --- a/Incremental.c +++ b/Incremental.c @@ -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]; |