diff options
author | Neil Brown <neilb@suse.de> | 2008-07-12 20:27:37 +1000 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2008-07-12 20:27:37 +1000 |
commit | 1522c538b1b8a685d4f0280eefbb2b82b82c1b6a (patch) | |
tree | 4a6adf79892b05aeb743fee9cecfab09c14ec807 /mapfile.c | |
parent | 59e3626815e78cc0519631e04a276df56e914ef4 (diff) | |
download | mdadm-1522c538b1b8a685d4f0280eefbb2b82b82c1b6a.tar.gz mdadm-1522c538b1b8a685d4f0280eefbb2b82b82c1b6a.tar.xz mdadm-1522c538b1b8a685d4f0280eefbb2b82b82c1b6a.zip |
Use text_version in map_file rather than major.minor.
Diffstat (limited to 'mapfile.c')
-rw-r--r-- | mapfile.c | 27 |
1 files changed, 13 insertions, 14 deletions
@@ -33,8 +33,8 @@ * also allows the array device name to be easily found. * * The map file is line based with space separated fields. The fields are: - * Device id - mdX or mdpX where is a number. - * metadata - 0.90 1.0 1.1 1.2 + * Device id - mdX or mdpX where X is a number. + * metadata - 0.90 1.0 1.1 1.2 ddf ... * UUID - uuid of the array * path - path where device created: /dev/md/home * @@ -62,7 +62,7 @@ int map_write(struct map_ent *mel) fprintf(f, "mdp%d ", -1-mel->devnum); else fprintf(f, "md%d ", mel->devnum); - fprintf(f, "%d.%d ", mel->major, mel->minor); + fprintf(f, "%s ", mel->metadata); fprintf(f, "%08x:%08x:%08x:%08x ", mel->uuid[0], mel->uuid[1], mel->uuid[2], mel->uuid[3]); fprintf(f, "%s\n", mel->path); @@ -87,13 +87,12 @@ int map_write(struct map_ent *mel) } void map_add(struct map_ent **melp, - int devnum, int major, int minor, int uuid[4], char *path) + int devnum, char *metadata, int uuid[4], char *path) { struct map_ent *me = malloc(sizeof(*me)); me->devnum = devnum; - me->major = major; - me->minor = minor; + strcpy(me->metadata, metadata); memcpy(me->uuid, uuid, 16); me->path = strdup(path); me->next = *melp; @@ -105,7 +104,8 @@ void map_read(struct map_ent **melp) FILE *f; char buf[8192]; char path[200]; - int devnum, major, minor, uuid[4]; + int devnum, uuid[4]; + char metadata[30]; char nam[4]; *melp = NULL; @@ -117,12 +117,12 @@ void map_read(struct map_ent **melp) return; while (fgets(buf, sizeof(buf), f)) { - if (sscanf(buf, " md%1[p]%d %d.%d %x:%x:%x:%x %200s", - nam, &devnum, &major, &minor, uuid, uuid+1, + if (sscanf(buf, " md%1[p]%d %s %x:%x:%x:%x %200s", + nam, &devnum, metadata, uuid, uuid+1, uuid+2, uuid+3, path) == 9) { if (nam[0] == 'p') devnum = -1 - devnum; - map_add(melp, devnum, major, minor, uuid, path); + map_add(melp, devnum, metadata, uuid, path); } } fclose(f); @@ -138,7 +138,7 @@ void map_free(struct map_ent *map) } } -int map_update(struct map_ent **mpp, int devnum, int major, int minor, +int map_update(struct map_ent **mpp, int devnum, char *metadata, int *uuid, char *path) { struct map_ent *map, *mp; @@ -151,15 +151,14 @@ int map_update(struct map_ent **mpp, int devnum, int major, int minor, for (mp = map ; mp ; mp=mp->next) if (mp->devnum == devnum) { - mp->major = major; - mp->minor = minor; + strcpy(mp->metadata, metadata); memcpy(mp->uuid, uuid, 16); free(mp->path); mp->path = strdup(path); break; } if (!mp) - map_add(&map, devnum, major, minor, uuid, path); + map_add(&map, devnum, metadata, uuid, path); *mpp = NULL; rv = map_write(map); map_free(map); |