- if (mdt->mdt_md_root != NULL)
- mdt_object_put(info->mti_env, mdt->mdt_md_root);
- mdt->mdt_md_root = md_root;
- spin_unlock(&mdt->mdt_lock);
+ if (mdt->mdt_md_root != NULL) {
+ spin_unlock(&mdt->mdt_lock);
+
+ LASSERTF(mdt->mdt_md_root == md_root,
+ "Different root object ("
+ DFID") instances, %p, %p\n",
+ PFID(&info->mti_tmp_fid1),
+ mdt->mdt_md_root, md_root);
+ LASSERT(atomic_read(
+ &md_root->mot_obj.lo_header->loh_ref) > 1);
+
+ mdt_object_put(info->mti_env, md_root);
+ } else {
+ mdt->mdt_md_root = md_root;
+ spin_unlock(&mdt->mdt_lock);
+ }