disallow create or grow clustered bitmap with writemostly set
Do not support creating an MD array on a clustered system (--bitmap=clustered) and disks with the write mostly (--write-mostly) flag set. Or do not grow an MD array on a non-clustered bitmap to a clustered bitmap with disks having the write mostly flag set. The actual results is the MD array is created successfully. But the expected results should be a failure with an error message stating: Can not set --write-mostly with a clustered bitmap. and disks marked write-mostly are not supported with clustered bitmap. V2: Added the device name in the error message during creation: mdadm -CR /dev/md0 -l1 --raid-devices=2 /dev/sda --write-mostly /dev/sdb --bitmap=clustered mdadm: Can not set /dev/sdb --write-mostly with a clustered bitmap. Added the array name in the error message when growing: mdadm --grow /dev/md0 --bitmap=clustered mdadm: /dev/md0 disks marked write-mostly are not supported with clustered bitmap Signed-off-by: Nigel Croxon <ncroxon@redhat.com> Signed-off-by: Jes Sorensen <jsorensen@fb.com>
This commit is contained in:
parent
cf16a35055
commit
a042210648
9
Create.c
9
Create.c
|
@ -899,8 +899,13 @@ int Create(struct supertype *st, char *mddev,
|
|||
else
|
||||
inf->disk.state = 0;
|
||||
|
||||
if (dv->writemostly == FlagSet)
|
||||
inf->disk.state |= (1<<MD_DISK_WRITEMOSTLY);
|
||||
if (dv->writemostly == FlagSet) {
|
||||
if (major_num == BITMAP_MAJOR_CLUSTERED) {
|
||||
pr_err("Can not set %s --write-mostly with a clustered bitmap\n",dv->devname);
|
||||
goto abort_locked;
|
||||
} else
|
||||
inf->disk.state |= (1<<MD_DISK_WRITEMOSTLY);
|
||||
}
|
||||
if (dv->failfast == FlagSet)
|
||||
inf->disk.state |= (1<<MD_DISK_FAILFAST);
|
||||
|
||||
|
|
5
Grow.c
5
Grow.c
|
@ -430,6 +430,11 @@ int Grow_addbitmap(char *devname, int fd, struct context *c, struct shape *s)
|
|||
dv = map_dev(disk.major, disk.minor, 1);
|
||||
if (!dv)
|
||||
continue;
|
||||
if (((disk.state & (1 << MD_DISK_WRITEMOSTLY)) == 0) &&
|
||||
(strcmp(s->bitmap_file, "clustered") == 0)) {
|
||||
pr_err("%s disks marked write-mostly are not supported with clustered bitmap\n",devname);
|
||||
return 1;
|
||||
}
|
||||
fd2 = dev_open(dv, O_RDWR);
|
||||
if (fd2 < 0)
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue