Whamcloud - gitweb
LU-9183 llite: add support set_acl method in inode operations
[fs/lustre-release.git] / lustre / llite / vvp_object.c
index eeb1771..8904e45 100644 (file)
@@ -100,6 +100,7 @@ static int vvp_attr_get(const struct lu_env *env, struct cl_object *obj,
        attr->cat_blocks = inode->i_blocks;
        attr->cat_uid = from_kuid(&init_user_ns, inode->i_uid);
        attr->cat_gid = from_kgid(&init_user_ns, inode->i_gid);
+       attr->cat_projid = ll_i2info(inode)->lli_projid;
        /* KMS is not known by this layer */
        return 0; /* layers below have to fill in the rest */
 }
@@ -121,8 +122,10 @@ static int vvp_attr_update(const struct lu_env *env, struct cl_object *obj,
                inode->i_ctime.tv_sec = attr->cat_ctime;
        if (0 && valid & CAT_SIZE)
                i_size_write(inode, attr->cat_size);
+       if (valid & CAT_PROJID)
+               ll_i2info(inode)->lli_projid = attr->cat_projid;
        /* not currently necessary */
-       if (0 && valid & (CAT_UID|CAT_GID|CAT_SIZE))
+       if (0 && valid & (CAT_UID|CAT_GID|CAT_SIZE|CAT_PROJID))
                mark_inode_dirty(inode);
        return 0;
 }
@@ -200,9 +203,11 @@ static void vvp_req_attr_set(const struct lu_env *env, struct cl_object *obj,
        oa = attr->cra_oa;
        inode = vvp_object_inode(obj);
 
-       if (attr->cra_type == CRT_WRITE)
+       if (attr->cra_type == CRT_WRITE) {
                valid_flags |= OBD_MD_FLMTIME | OBD_MD_FLCTIME |
                               OBD_MD_FLUID | OBD_MD_FLGID;
+               obdo_set_o_projid(oa, ll_i2info(inode)->lli_projid);
+       }
        obdo_from_inode(oa, inode, valid_flags & attr->cra_flags);
        obdo_set_parent_fid(oa, &ll_i2info(inode)->lli_fid);
        if (OBD_FAIL_CHECK(OBD_FAIL_LFSCK_INVALID_PFID))