Add MPB_ATTRIB_RAID10_EXT attribute to support RAID 10 with more than 4 drives. Allow more than 4 drives in imsm_orom_support_raid_disks_raid10(). This is one of last patches for introducing R10D4+ to imsm. Only small adjustments in reshape behaviours are needed. Signed-off-by: Mateusz Kusiak <mateusz.kusiak@xxxxxxxxx> Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@xxxxxxxxxxxxxxx> --- platform-intel.c | 3 ++- super-intel.c | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/platform-intel.c b/platform-intel.c index 40e8fb82da30..15a9fa5ac160 100644 --- a/platform-intel.c +++ b/platform-intel.c @@ -76,7 +76,8 @@ static bool imsm_orom_support_raid_disks_count_raid5(const int raid_disks) static bool imsm_orom_support_raid_disks_count_raid10(const int raid_disks) { - if (raid_disks == 4) + /* raid_disks count must be higher than 4 and even */ + if (raid_disks >= 4 && (raid_disks & 1) == 0) return true; return false; } diff --git a/super-intel.c b/super-intel.c index 4b168add4346..2d30931672cd 100644 --- a/super-intel.c +++ b/super-intel.c @@ -62,6 +62,8 @@ #define MPB_ATTRIB_RAIDCNG __cpu_to_le32(0x00000020) /* supports expanded stripe sizes of 256K, 512K and 1MB */ #define MPB_ATTRIB_EXP_STRIPE_SIZE __cpu_to_le32(0x00000040) +/* supports RAID10 with more than 4 drives */ +#define MPB_ATTRIB_RAID10_EXT __cpu_to_le32(0x00000080) /* The OROM Support RST Caching of Volumes */ #define MPB_ATTRIB_NVM __cpu_to_le32(0x02000000) @@ -89,6 +91,7 @@ MPB_ATTRIB_RAID10 | \ MPB_ATTRIB_RAID5 | \ MPB_ATTRIB_EXP_STRIPE_SIZE | \ + MPB_ATTRIB_RAID10_EXT | \ MPB_ATTRIB_BBM) /* Define attributes that are unused but not harmful */ @@ -5552,6 +5555,8 @@ static void imsm_update_version_info(struct intel_super *super) break; case IMSM_T_RAID10: mpb->attributes |= MPB_ATTRIB_RAID10; + if (map->num_members > 4) + mpb->attributes |= MPB_ATTRIB_RAID10_EXT; break; } } -- 2.39.2