From: Kinga Stefaniuk Date: Tue, 11 Jun 2024 05:58:49 +0000 (+0200) Subject: imsm: make freesize required to volume autolayout X-Git-Tag: mdadm-4.4~146 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4f3efc34644d06f55fc650e4aa6b5a6ec22cea5f;p=thirdparty%2Fmdadm.git imsm: make freesize required to volume autolayout Autolayout_imsm() shall be executed when IMSM_NO_PLATFORM=1 is set. It was fixed by listed commit, checking super->orom was removed, but also checking freesize. Freesize is not set for operations on RAID volume with no size update, that's why it is not required to have this value and always run autolayout_imsm(). Fix it by making autolayout_imsm() dependent on freesize. Fixes: 46f192 ("imsm: fix first volume autolayout with IMSM_NO_PLATFORM") Signed-off-by: Kinga Stefaniuk --- diff --git a/super-intel.c b/super-intel.c index 29652196..ef3f5da1 100644 --- a/super-intel.c +++ b/super-intel.c @@ -7749,7 +7749,7 @@ static int validate_geometry_imsm(struct supertype *st, int level, int layout, verbose)) return 0; - if (super->orom && freesize) { + if (super->orom) { int count = count_volumes(super->hba, super->orom->dpa, verbose); if (super->orom->vphba <= count) { @@ -7759,9 +7759,11 @@ static int validate_geometry_imsm(struct supertype *st, int level, int layout, } } - rv = autolayout_imsm(super, raiddisks, size, *chunk, freesize); - if (rv != IMSM_STATUS_OK) - return 0; + if (freesize) { + rv = autolayout_imsm(super, raiddisks, size, *chunk, freesize); + if (rv != IMSM_STATUS_OK) + return 0; + } return 1; }