Support 'bitmap=' in mdadm.conf for auto-assembling arrays with write-intent bitmaps in separate files.
Signed-off-by: Neil Brown <neilb@suse.de>
This commit is contained in:
parent
2ae555c3d9
commit
7ef02d0143
16
Assemble.c
16
Assemble.c
|
@ -623,8 +623,22 @@ int Assemble(struct supertype *st, char *mddev, int mdfd,
|
|||
fprintf(stderr, Name ": SET_BITMAP_FILE failed.\n");
|
||||
return 1;
|
||||
}
|
||||
} else if (ident->bitmap_file) {
|
||||
/* From config file */
|
||||
int bmfd = open(ident->bitmap_file, O_RDWR);
|
||||
if (bmfd < 0) {
|
||||
fprintf(stderr, Name ": Could not open bitmap file %s\n",
|
||||
ident->bitmap_file);
|
||||
return 1;
|
||||
}
|
||||
if (ioctl(mdfd, SET_BITMAP_FILE, bmfd) != 0) {
|
||||
fprintf(stderr, Name ": Failed to set bitmapfile for %s\n", mddev);
|
||||
close(bmfd);
|
||||
return 1;
|
||||
}
|
||||
close(bmfd);
|
||||
}
|
||||
|
||||
|
||||
/* First, add the raid disks, but add the chosen one last */
|
||||
for (i=0; i<= bestcnt; i++) {
|
||||
int j;
|
||||
|
|
|
@ -14,6 +14,8 @@ Changes Prior to 2.4 release
|
|||
- Handle symlinks in /dev better
|
||||
- Fix mess in --detail output which a device is missing.
|
||||
- Manpage tidyup
|
||||
- Support 'bitmap=' in mdadm.conf for auto-assembling arrays with
|
||||
write-intent bitmaps in separate files.
|
||||
|
||||
Changes Prior to 2.3.1 release
|
||||
- Fixed -O2 compile so I could make and RPM.
|
||||
|
|
8
config.c
8
config.c
|
@ -281,6 +281,7 @@ void arrayline(char *line)
|
|||
mis.next = NULL;
|
||||
mis.st = NULL;
|
||||
mis.bitmap_fd = -1;
|
||||
mis.bitmap_file = NULL;
|
||||
mis.name[0] = 0;
|
||||
|
||||
for (w=dl_next(line); w!=line; w=dl_next(w)) {
|
||||
|
@ -321,6 +322,13 @@ void arrayline(char *line)
|
|||
else
|
||||
strcpy(mis.name, w+5);
|
||||
|
||||
} else if (strncasecmp(w, "bitmap=", 7) == 0) {
|
||||
if (mis.bitmap_file)
|
||||
fprintf(stderr, Name ": only specify bitmap file once. %s ignored\n",
|
||||
w);
|
||||
else
|
||||
mis.bitmap_file = w+7;
|
||||
|
||||
} else if (strncasecmp(w, "devices=", 8 ) == 0 ) {
|
||||
if (mis.devices)
|
||||
fprintf(stderr, Name ": only specify devices once (use a comma separated list). %s ignored\n",
|
||||
|
|
1
mdadm.c
1
mdadm.c
|
@ -112,6 +112,7 @@ int main(int argc, char *argv[])
|
|||
ident.autof = 0;
|
||||
ident.st = NULL;
|
||||
ident.bitmap_fd = -1;
|
||||
ident.bitmap_file = NULL;
|
||||
ident.name[0] = 0;
|
||||
|
||||
while ((option_index = -1) ,
|
||||
|
|
12
mdadm.conf.5
12
mdadm.conf.5
|
@ -151,6 +151,18 @@ also have a number appended to indicate how many partitions to create
|
|||
device files for, e.g.
|
||||
.BR auto=mdp5 .
|
||||
The default is 4.
|
||||
|
||||
.TP
|
||||
.B bitmap=
|
||||
The option specifies a file in which a write-intent bitmap should be
|
||||
found. When assembling the array,
|
||||
.I mdadm
|
||||
will provide this file to the
|
||||
.B md
|
||||
driver as the bitmap file. This has the same function as the
|
||||
.B --bitmap-file
|
||||
option to
|
||||
.BR --assemble .
|
||||
.RE
|
||||
|
||||
.TP
|
||||
|
|
Loading…
Reference in New Issue