X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Fmdd%2Fmdd_object.c;h=cf171468c9667be3dcc653d00a3e85df3daaa55b;hp=ace6de2880bd9b2b050b6b2fee8aa21bdb862595;hb=ce8821a05da59e00de43e7c2f504bdb3b9dab82c;hpb=e1df4805368b1976055031287bb5e7b9040bc6cc diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index ace6de2..cf17146 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -1514,6 +1514,29 @@ static int mdd_declare_attr_set(const struct lu_env *env, return rc; } +#ifdef CONFIG_FS_POSIX_ACL + if (ma->ma_attr.la_valid & LA_MODE) { + mdd_read_lock(env, obj, MOR_TGT_CHILD); + rc = mdo_xattr_get(env, obj, buf, XATTR_NAME_ACL_ACCESS, + BYPASS_CAPA); + mdd_read_unlock(env, obj); + if (rc == -EOPNOTSUPP || rc == -ENODATA) + rc = 0; + else if (rc < 0) + return rc; + + if (rc != 0) { + buf->lb_buf = NULL; + buf->lb_len = rc; + rc = mdo_declare_xattr_set(env, obj, buf, + XATTR_NAME_ACL_ACCESS, 0, + handle); + if (rc) + return rc; + } + } +#endif + /* basically the log is the same as in unlink case */ if (lmm) { __u16 stripe;