Whamcloud - gitweb
LU-10271 hsm: don't release with wrong size
[fs/lustre-release.git] / lustre / llite / file.c
index d640b0d..c52a1f1 100644 (file)
@@ -1020,7 +1020,10 @@ int ll_merge_attr(const struct lu_env *env, struct inode *inode)
        ctime = LTIME_S(inode->i_ctime);
 
        cl_object_attr_lock(obj);
-       rc = cl_object_attr_get(env, obj, attr);
+       if (OBD_FAIL_CHECK(OBD_FAIL_MDC_MERGE))
+               rc = -EINVAL;
+       else
+               rc = cl_object_attr_get(env, obj, attr);
        cl_object_attr_unlock(obj);
 
        if (rc != 0)
@@ -2169,9 +2172,15 @@ int ll_hsm_release(struct inode *inode)
        if (IS_ERR(env))
                GOTO(out, rc = PTR_ERR(env));
 
-       ll_merge_attr(env, inode);
+       rc = ll_merge_attr(env, inode);
        cl_env_put(env, &refcheck);
 
+       /* If error happen, we have the wrong size for a file.
+        * Don't release it.
+        */
+       if (rc != 0)
+               GOTO(out, rc);
+
        /* Release the file.
         * NB: lease lock handle is released in mdc_hsm_release_pack() because
         * we still need it to pack l_remote_handle to MDT. */