--- initial
+++ final
@@ -1,99 +1,99 @@
 int lov_getstripe(struct lov_object *obj, struct lov_stripe_md *lsm, struct lov_user_md __user *lump) {
   /* we use lov_user_md_v3 because it is larger than lov_user_md_v1 */
   struct lov_user_md_v3 lum;
   struct lov_mds_md *lmmk;
   u32 stripe_count;
   ssize_t lmm_size;
   size_t lmmk_size;
   size_t lum_size;
   int rc;
   mm_segment_t seg;
   if (!lsm) return -ENODATA;
   /*
    * "Switch to kernel segment" to allow copying from kernel space by
    * copy_{to,from}_user().
    */
   seg = get_fs();
   set_fs(KERNEL_DS);
   if (lsm->lsm_magic != LOV_MAGIC_V1 && lsm->lsm_magic != LOV_MAGIC_V3) {
     CERROR("bad LSM MAGIC: 0x%08X != 0x%08X nor 0x%08X\n", lsm->lsm_magic, LOV_MAGIC_V1, LOV_MAGIC_V3);
     rc = -EIO;
     goto out;
   }
   if (!lsm_is_released(lsm))
     stripe_count = lsm->lsm_stripe_count;
   else
     stripe_count = 0;
   /* we only need the header part from user space to get lmm_magic and
    * lmm_stripe_count, (the header part is common to v1 and v3)
    */
   lum_size = sizeof(struct lov_user_md_v1);
   if (copy_from_user(&lum, lump, lum_size)) {
     rc = -EFAULT;
     goto out;
   }
   if (lum.lmm_magic != LOV_USER_MAGIC_V1 && lum.lmm_magic != LOV_USER_MAGIC_V3 && lum.lmm_magic != LOV_USER_MAGIC_SPECIFIC) {
     rc = -EINVAL;
     goto out;
   }
   if (lum.lmm_stripe_count && (lum.lmm_stripe_count < lsm->lsm_stripe_count)) {
     /* Return right size of stripe to user */
     lum.lmm_stripe_count = stripe_count;
     rc = copy_to_user(lump, &lum, lum_size);
     rc = -EOVERFLOW;
     goto out;
   }
   lmmk_size = lov_mds_md_size(stripe_count, lsm->lsm_magic);
   lmmk = libcfs_kvzalloc(lmmk_size, GFP_NOFS);
   if (!lmmk) {
     rc = -ENOMEM;
     goto out;
   }
   lmm_size = lov_lsm_pack(lsm, lmmk, lmmk_size);
   if (lmm_size < 0) {
     rc = lmm_size;
     goto out_free;
   }
   /* FIXME: Bug 1185 - copy fields properly when structs change */
   /* struct lov_user_md_v3 and struct lov_mds_md_v3 must be the same */
-  CLASSERT(sizeof(lum) == sizeof(struct lov_mds_md_v3));
-  CLASSERT(sizeof(lum.lmm_objects[0]) == sizeof(lmmk->lmm_objects[0]));
+  BUILD_BUG_ON(sizeof(lum) != sizeof(struct lov_mds_md_v3));
+  BUILD_BUG_ON(sizeof(lum.lmm_objects[0]) != sizeof(lmmk->lmm_objects[0]));
   if (cpu_to_le32(LOV_MAGIC) != LOV_MAGIC && (lmmk->lmm_magic == cpu_to_le32(LOV_MAGIC_V1) || lmmk->lmm_magic == cpu_to_le32(LOV_MAGIC_V3))) {
     lustre_swab_lov_mds_md(lmmk);
     lustre_swab_lov_user_md_objects((struct lov_user_ost_data *)lmmk->lmm_objects, lmmk->lmm_stripe_count);
   }
   if (lum.lmm_magic == LOV_USER_MAGIC) {
     /* User request for v1, we need skip lmm_pool_name */
     if (lmmk->lmm_magic == LOV_MAGIC_V3) {
       memmove(((struct lov_mds_md_v1 *)lmmk)->lmm_objects, ((struct lov_mds_md_v3 *)lmmk)->lmm_objects, lmmk->lmm_stripe_count * sizeof(struct lov_ost_data_v1));
       lmm_size -= LOV_MAXPOOLNAME;
     }
   } else {
     /* if v3 we just have to update the lum_size */
     lum_size = sizeof(struct lov_user_md_v3);
   }
   /* User wasn't expecting this many OST entries */
   if (lum.lmm_stripe_count == 0) {
     lmm_size = lum_size;
   } else if (lum.lmm_stripe_count < lmmk->lmm_stripe_count) {
     rc = -EOVERFLOW;
     goto out_free;
   }
   /*
    * Have a difference between lov_mds_md & lov_user_md.
    * So we have to re-order the data before copy to user.
    */
   lum.lmm_stripe_count = lmmk->lmm_stripe_count;
   lum.lmm_layout_gen = lmmk->lmm_layout_gen;
   ((struct lov_user_md *)lmmk)->lmm_layout_gen = lum.lmm_layout_gen;
   ((struct lov_user_md *)lmmk)->lmm_stripe_count = lum.lmm_stripe_count;
   if (copy_to_user(lump, lmmk, lmm_size))
     rc = -EFAULT;
   else
     rc = 0;
 out_free:
   kvfree(lmmk);
 out:
   set_fs(seg);
   return rc;
 }<sep>@@
expression e1,e2;
@@
-               CLASSERT(e1 == e2);
+               BUILD_BUG_ON(e1 != e2);