Check and remove bitmap first when reshape to raid0

If reshape one raid device with bitmap to raid0, the reshape progress will
start. But it'll fail and lose some components. So it should remove bitmap
first.

Signed-off-by: Xiao Ni <xni@redhat.com>
Signed-off-by: NeilBrown <neilb@suse.com>
This commit is contained in:
Xiao Ni 2015-12-22 11:09:34 +08:00 committed by NeilBrown
parent 38c2e05b6a
commit f7cf9699dc
1 changed files with 9 additions and 0 deletions

9
Grow.c
View File

@ -1590,6 +1590,15 @@ int Grow_reshape(char *devname, int fd,
pr_err("Cannot increase raid-disks on this array beyond %d\n", st->max_devs);
return 1;
}
if (s->level == 0 &&
(array.state & (1<<MD_SB_BITMAP_PRESENT)) &&
!(array.state & (1<<MD_SB_CLUSTERED))) {
array.state &= ~(1<<MD_SB_BITMAP_PRESENT);
if (ioctl(fd, SET_ARRAY_INFO, &array)!= 0) {
pr_err("failed to remove internal bitmap.\n");
return 1;
}
}
/* in the external case we need to check that the requested reshape is
* supported, and perform an initial check that the container holds the