]> git.ipfire.org Git - thirdparty/mdadm.git/commitdiff
IMSM: allow some array attribute bits to be ignored.
authorNeilBrown <neilb@suse.de>
Mon, 8 Aug 2011 22:49:34 +0000 (08:49 +1000)
committerNeilBrown <neilb@suse.de>
Mon, 8 Aug 2011 22:49:34 +0000 (08:49 +1000)
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 <thestonewell@googlemail.com>
Signed-off-by: NeilBrown <neilb@suse.de>
super-intel.c

index dcab5f9b2b490b394344d910e01fcff6a8354a9d..ddf4de90100c1e3d4dcf79c751c0cd4e1368194f 100644 (file)
 
 /* 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;