X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmdt%2Fmdt_open.c;h=9bd929f62ad4da42c19916acc598966ed50e4705;hp=8d64eb851375df8d3ddb1223f49ba23cbb927171;hb=1bf196aaf5adb9a1c67886c0cd6a780ec6838040;hpb=d3409e4a55c8c9a18a63743014a1e1c1bfc8b86d diff --git a/lustre/mdt/mdt_open.c b/lustre/mdt/mdt_open.c index 8d64eb8..9bd929f 100644 --- a/lustre/mdt/mdt_open.c +++ b/lustre/mdt/mdt_open.c @@ -1189,10 +1189,22 @@ static int mdt_lock_root_xattr(struct mdt_thread_info *info, 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))