*
* You should have received a copy of the GNU General Public License
* version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
+ * http://www.gnu.org/licenses/gpl-2.0.html
*
* GPL HEADER END
*/
return PTR_ERR(md_root);
spin_lock(&mdt->mdt_lock);
- 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);
+ }
}
if (md_root->mot_cache_attr || !mdt_object_remote(md_root))