diff --git a/lustre/mdt/mdt_recovery.c b/lustre/mdt/mdt_recovery.c
index 907d7ae1798e658d9d65256e22cef6dfa5c8e6ec..987a740a61e64aefde2f4f28597c4e5c90d29ad2 100644
--- a/lustre/mdt/mdt_recovery.c
+++ b/lustre/mdt/mdt_recovery.c
@@ -1124,6 +1124,8 @@ static void mdt_reconstruct_create(struct mdt_thread_info *mti,
         }
 
         body = req_capsule_server_get(mti->mti_pill, &RMF_MDT_BODY);
+        mti->mti_attr.ma_need = MA_INODE;
+        mti->mti_attr.ma_valid = 0;
         rc = mo_attr_get(mti->mti_env, mdt_object_child(child), &mti->mti_attr);
         if (rc == -EREMOTE) {
                 /* object was created on remote server */
@@ -1161,6 +1163,8 @@ static void mdt_reconstruct_setattr(struct mdt_thread_info *mti,
                 EXIT;
                 return;
         }
+        mti->mti_attr.ma_need = MA_INODE;
+        mti->mti_attr.ma_valid = 0;
         mo_attr_get(mti->mti_env, mdt_object_child(obj), &mti->mti_attr);
         mdt_pack_attr2body(mti, body, &mti->mti_attr.ma_attr,
                            mdt_object_fid(obj));