summaryrefslogtreecommitdiff
path: root/Incremental.c
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2008-05-15 16:48:25 +1000
committerNeil Brown <neilb@suse.de>2008-05-15 16:48:25 +1000
commit5f2aace8eba3b4d9c82ed520d0fdf0f5d2b990e6 (patch)
tree3c1bdc164c6d4f221b9a43afdf1cc8724707267f /Incremental.c
parentf352c5452740659f651ff52c657ca95f01bce30a (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.c23
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];