From: fanyong Date: Tue, 7 Nov 2006 05:06:07 +0000 (+0000) Subject: Pass lu_attr as arg for __mdd_permission_internal explicitly. X-Git-Tag: v1_8_0_110~486^2~221 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=4a5f226baf7feb2ac8e9e1742b90cf5c937115b0;p=fs%2Flustre-release.git Pass lu_attr as arg for __mdd_permission_internal explicitly. --- diff --git a/lustre/mdd/mdd_internal.h b/lustre/mdd/mdd_internal.h index 2f1e990..706a492 100644 --- a/lustre/mdd/mdd_internal.h +++ b/lustre/mdd/mdd_internal.h @@ -285,7 +285,7 @@ int __mdd_acl_init(const struct lu_env *env, struct mdd_object *obj, int mdd_acl_init(const struct lu_env *env, struct mdd_object *pobj, struct mdd_object *cobj, __u32 *mode, struct thandle *handle); int __mdd_permission_internal(const struct lu_env *env, struct mdd_object *obj, - int mask, int getattr); + int mask, struct lu_attr *la); int mdd_permission_internal(const struct lu_env *env, struct mdd_object *obj, int mask); int mdd_permission_internal_locked(const struct lu_env *env, diff --git a/lustre/mdd/mdd_object.c b/lustre/mdd/mdd_object.c index f150e39..655a77b 100644 --- a/lustre/mdd/mdd_object.c +++ b/lustre/mdd/mdd_object.c @@ -585,7 +585,7 @@ int mdd_fix_attr(const struct lu_env *env, struct mdd_object *obj, /* Check for setting the obj time. */ if ((la->la_valid & (LA_MTIME | LA_ATIME | LA_CTIME)) && !(la->la_valid & ~(LA_MTIME | LA_ATIME | LA_CTIME))) { - rc = __mdd_permission_internal(env, obj, MAY_WRITE, 0); + rc = __mdd_permission_internal(env, obj, MAY_WRITE, tmp_la); if (rc) RETURN(rc); } @@ -671,7 +671,7 @@ int mdd_fix_attr(const struct lu_env *env, struct mdd_object *obj, /* For tuncate (or setsize), we should have MAY_WRITE perm */ if (la->la_valid & (LA_SIZE | LA_BLOCKS)) { - rc = __mdd_permission_internal(env, obj, MAY_WRITE, 0); + rc = __mdd_permission_internal(env, obj, MAY_WRITE, tmp_la); if (rc) RETURN(rc); @@ -1124,7 +1124,7 @@ static int mdd_open_sanity_check(const struct lu_env *env, RETURN(-EISDIR); if (!(flag & MDS_OPEN_CREATED)) { - rc = __mdd_permission_internal(env, obj, mode, 0); + rc = __mdd_permission_internal(env, obj, mode, tmp_la); if (rc) RETURN(rc); } diff --git a/lustre/mdd/mdd_permission.c b/lustre/mdd/mdd_permission.c index eed2885..3645b8e 100644 --- a/lustre/mdd/mdd_permission.c +++ b/lustre/mdd/mdd_permission.c @@ -482,9 +482,8 @@ static int mdd_check_acl(const struct lu_env *env, struct mdd_object *obj, int __mdd_permission_internal(const struct lu_env *env, struct mdd_object *obj, - int mask, int getattr) + int mask, struct lu_attr *la) { - struct lu_attr *la = &mdd_env_info(env)->mti_la; struct md_ucred *uc = md_ucred(env); __u32 mode; int rc; @@ -507,7 +506,8 @@ int __mdd_permission_internal(const struct lu_env *env, if ((mask & MAY_WRITE) && mdd_is_immutable(obj)) RETURN(-EACCES); - if (getattr) { + if (la == NULL) { + la = &mdd_env_info(env)->mti_la; rc = mdd_la_get(env, obj, la, BYPASS_CAPA); if (rc) RETURN(rc); @@ -549,7 +549,7 @@ check_capabilities: int mdd_permission_internal(const struct lu_env *env, struct mdd_object *obj, int mask) { - return __mdd_permission_internal(env, obj, mask, 1); + return __mdd_permission_internal(env, obj, mask, NULL); } inline int mdd_permission_internal_locked(const struct lu_env *env,