super1: add more checks for NodeNumUpdate option
There are some cases which didn't need to check the space is enough or not for NodeNumUpdate option. 1. for array which does not have clustered bitmap. 2. "--nodes" parameter is 0 (eg, add a disk to clustered raid). 3. if "--nodes" parameter is set to a smaller num than current bms->nodes. Signed-off-by: Guoqing Jiang <gqjiang@suse.com> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
This commit is contained in:
parent
6ac963cef0
commit
45a87c2f31
22
super1.c
22
super1.c
|
@ -2394,9 +2394,25 @@ static int write_bitmap1(struct supertype *st, int fd, enum bitmap_update update
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (bms->version == BITMAP_MAJOR_CLUSTERED && st->nodes <= 1) {
|
||||
pr_err("Warning: cluster-md at least needs two nodes\n");
|
||||
return -EINVAL;
|
||||
if (bms->version == BITMAP_MAJOR_CLUSTERED) {
|
||||
if (st->nodes == 1) {
|
||||
/* the parameter for nodes is not valid */
|
||||
pr_err("Warning: cluster-md at least needs two nodes\n");
|
||||
return -EINVAL;
|
||||
} else if (st->nodes == 0)
|
||||
/* --nodes is not specified */
|
||||
break;
|
||||
else if (__cpu_to_le32(st->nodes) < bms->nodes) {
|
||||
/* Since the nodes num is not increased, no need to check the space
|
||||
* is enough or not, just update bms->nodes */
|
||||
bms->nodes = __cpu_to_le32(st->nodes);
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
/* no need to change bms->nodes for other bitmap types */
|
||||
if (st->nodes)
|
||||
pr_err("Warning: --nodes option is only suitable for clustered bitmap\n");
|
||||
break;
|
||||
}
|
||||
|
||||
/* Each node has an independent bitmap, it is necessary to calculate the
|
||||
|
|
Loading…
Reference in New Issue