Whamcloud - gitweb
LU-5262 osd: only allow set size for regular file
[fs/lustre-release.git] / lustre / mdd / mdd_permission.c
index da184e8..2471c0c 100644 (file)
@@ -136,6 +136,7 @@ int mdd_acl_set(const struct lu_env *env, struct mdd_object *obj,
 
        if (mode_change) {
                la->la_mode = mode;
+               la->la_valid = LA_MODE;
                rc = mdo_declare_attr_set(env, obj, la, handle);
        }
 
@@ -308,7 +309,8 @@ int mdd_permission(const struct lu_env *env,
        struct lu_ucred *uc = NULL;
        struct lu_attr *pattr = NULL;
        struct lu_attr *cattr = MDD_ENV_VAR(env, cattr);
-       int check_create, check_link;
+       bool check_create;
+       bool check_link;
        int check_unlink;
        int check_rename_src, check_rename_tar;
        int check_vtx_part, check_vtx_full;
@@ -336,8 +338,8 @@ int mdd_permission(const struct lu_env *env,
        if (unlikely(mask & MDS_OPEN_CROSS))
                mask = accmode(env, cattr, mask & ~MDS_OPEN_CROSS);
 
-        check_create = mask & MAY_CREATE;
-        check_link = mask & MAY_LINK;
+       check_create = mask & MAY_CREATE;
+       check_link = mask & MAY_LINK;
         check_unlink = mask & MAY_UNLINK;
         check_rename_src = mask & MAY_RENAME_SRC;
         check_rename_tar = mask & MAY_RENAME_TAR;
@@ -354,9 +356,8 @@ int mdd_permission(const struct lu_env *env,
        rc = mdd_permission_internal_locked(env, mdd_cobj, cattr, mask,
                                        MOR_TGT_CHILD);
 
-       if (!rc && (check_create || check_link))
-               rc = mdd_may_create(env, mdd_pobj, pattr, mdd_cobj, 1,
-                               check_link);
+       if (!rc && check_create)
+               rc = mdd_may_create(env, mdd_pobj, pattr, mdd_cobj, true);
 
        if (!rc && check_unlink)
                rc = mdd_may_unlink(env, mdd_pobj, pattr, cattr);