When changing the pool size we use check_pg_num to not exceed
`mon_max_pg_per_osd` value. This check should only be applied
when increasing the size to avoid underflows.
(Same already applied when changing pg_num)
Signed-off-by: Matan Breizman <mbreizma@redhat.com>
(cherry picked from commit
a7c09bb82cc7749b05a0f60477c9407a177086d1)
ss << "crush rule " << p.get_crush_rule() << " type does not match pool";
return -EINVAL;
}
- int r = check_pg_num(pool, p.get_pg_num(), n, p.get_crush_rule(), &ss);
- if (r < 0) {
- return r;
+ if (n > p.size) {
+ // only when increasing pool size
+ int r = check_pg_num(pool, p.get_pg_num(), n, p.get_crush_rule(), &ss);
+ if (r < 0) {
+ return r;
+ }
}
p.size = n;
p.min_size = g_conf().get_osd_pool_default_min_size(p.size);