c6a442ba3e
Older imsm arrays, or arrays created by something other than mdadm, might have one of two unused bits in the attributes field set. If they do, we need to ignore them, not fail to assemble the array. Signed-off-by: Doug Ledford <dledford@redhat.com> (cherry picked from commit 22ef59a98600f5900f957e2a0bdc16139aa528da)
42 lines
1.6 KiB
Diff
42 lines
1.6 KiB
Diff
diff -up mdadm-3.2.2/super-intel.c.attributes mdadm-3.2.2/super-intel.c
|
|
--- mdadm-3.2.2/super-intel.c.attributes 2011-08-31 15:50:02.919229255 -0400
|
|
+++ mdadm-3.2.2/super-intel.c 2011-08-31 15:51:58.560231484 -0400
|
|
@@ -74,14 +74,18 @@
|
|
|
|
/* 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 | \
|
|
+ MPB_ATTRIB_NEVER_USE2)
|
|
|
|
#define MPB_SECTOR_CNT 2210
|
|
#define IMSM_RESERVED_SECTORS 4096
|
|
@@ -1141,11 +1145,14 @@ void examine_migr_rec_imsm(struct intel_
|
|
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;
|