Whamcloud - gitweb
Branch b1_8
authorjohann <johann>
Wed, 21 Oct 2009 09:20:28 +0000 (09:20 +0000)
committerjohann <johann>
Wed, 21 Oct 2009 09:20:28 +0000 (09:20 +0000)
b=20318
i=adilger
i=panda

don't memcmp magic in the updgrade/downgrade case when lsm magic
has change from/to v1 to/from v3.

lustre/include/obd.h

index 10375f0..ad93b0e 100644 (file)
@@ -199,17 +199,22 @@ struct obd_info {
 static inline int lov_stripe_md_cmp(struct lov_stripe_md *m1,
                                     struct lov_stripe_md *m2)
 {
-        int len = sizeof(m1->lsm_wire);
+       if ((m1->lsm_magic == LOV_MAGIC_V1 && m2->lsm_magic == LOV_MAGIC_V3) ||
+           (m1->lsm_magic == LOV_MAGIC_V3 && m2->lsm_magic == LOV_MAGIC_V1))
+                /*
+                 * Dowgrade/upgrade case (b=20318) to a version that
+                 * doesn't/does OST pools. Compare only objid and stripe
+                 * size/count in this case
+                 */
+                return m1->lsm_object_id != m2->lsm_object_id ||
+                       m1->lsm_stripe_size != m2->lsm_stripe_size ||
+                       m1->lsm_stripe_count != m2->lsm_stripe_count;
 
         /*
          * ->lsm_wire contains padding, but it should be zeroed out during
-         * allocation. If either lsm is LOV_MAGIC_V1 do not check that
-         * the pool is the same, due to downgrade/upgrade (b=20318).  This
-         * assumes that lw_pool_name is the last member in lsm_wire.
+         * allocation.
          */
-        if (m1->lsm_magic == LOV_MAGIC_V1 || m2->lsm_magic == LOV_MAGIC_V1)
-                 len -= LOV_MAXPOOLNAME;
-        return memcmp(&m1->lsm_wire, &m2->lsm_wire, len);
+        return memcmp(&m1->lsm_wire, &m2->lsm_wire, sizeof(m1->lsm_wire));
 }
 
 void lov_stripe_lock(struct lov_stripe_md *md);