]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
imsm: make freesize required to volume autolayout
authorKinga Stefaniuk <kinga.stefaniuk@intel.com>
Tue, 11 Jun 2024 05:58:49 +0000 (07:58 +0200)
committerMariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
Tue, 11 Jun 2024 12:06:16 +0000 (14:06 +0200)
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 <kinga.stefaniuk@intel.com>
super-intel.c

index 29652196141b7d697ce0e2670d1be43395603235..ef3f5da1db79ddf9be2fa94a3aaa4540e24e8bbe 100644 (file)
@@ -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;
        }