From 418f9b368a1200370695527d22aba8c3606172c5 Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Tue, 9 Aug 2011 08:49:34 +1000 Subject: [PATCH] IMSM: allow some array attribute bits to be ignored. Some bits are not handled by mdadm, but their presence should not cause failure. In particular MPB_ATTRIB_NEVER_USE appears harmless. Reported-by: Thomas Steinborn Signed-off-by: NeilBrown --- super-intel.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/super-intel.c b/super-intel.c index dcab5f9b..ddf4de90 100644 --- a/super-intel.c +++ b/super-intel.c @@ -74,14 +74,17 @@ /* Define all supported attributes that have to be accepted by mdadm */ -#define MPB_ATTRIB_SUPPORTED MPB_ATTRIB_CHECKSUM_VERIFY | \ +#define MPB_ATTRIB_SUPPORTED (MPB_ATTRIB_CHECKSUM_VERIFY | \ MPB_ATTRIB_2TB | \ MPB_ATTRIB_2TB_DISK | \ MPB_ATTRIB_RAID0 | \ MPB_ATTRIB_RAID1 | \ MPB_ATTRIB_RAID10 | \ MPB_ATTRIB_RAID5 | \ - MPB_ATTRIB_EXP_STRIPE_SIZE + MPB_ATTRIB_EXP_STRIPE_SIZE) + +/* Define attributes that are unused but not harmful */ +#define MPB_ATTRIB_IGNORED (MPB_ATTRIB_NEVER_USE) #define MPB_SECTOR_CNT 2210 #define IMSM_RESERVED_SECTORS 4096 @@ -1141,11 +1144,14 @@ void examine_migr_rec_imsm(struct intel_super *super) static int imsm_check_attributes(__u32 attributes) { int ret_val = 1; - __u32 not_supported = (MPB_ATTRIB_SUPPORTED)^0xffffffff; + __u32 not_supported = MPB_ATTRIB_SUPPORTED^0xffffffff; + + not_supported &= ~MPB_ATTRIB_IGNORED; not_supported &= attributes; if (not_supported) { - fprintf(stderr, Name "(IMSM): Unsupported attributes : %x\n", not_supported); + fprintf(stderr, Name "(IMSM): Unsupported attributes : %x\n", + (unsigned)__le32_to_cpu(not_supported)); if (not_supported & MPB_ATTRIB_CHECKSUM_VERIFY) { dprintf("\t\tMPB_ATTRIB_CHECKSUM_VERIFY \n"); not_supported ^= MPB_ATTRIB_CHECKSUM_VERIFY; -- 2.39.2