Whamcloud - gitweb
Branch HEAD
authorhuanghua <huanghua>
Thu, 11 Dec 2008 03:05:20 +0000 (03:05 +0000)
committerhuanghua <huanghua>
Thu, 11 Dec 2008 03:05:20 +0000 (03:05 +0000)
b=17288

att=20766
i=adilger
i=rahul.deshmukh
i=nathan.rutman

ignore direct "trusted.{lma, link}" setting on client and server.

lustre/include/lustre/lustre_idl.h
lustre/include/lustre_mds.h
lustre/llite/xattr.c
lustre/mdd/mdd_dir.c
lustre/mdd/mdd_lov.c
lustre/mdd/mdd_object.c
lustre/mdt/mdt_xattr.c
lustre/osd/osd_handler.c

index 9eb187a..eb9cdca 100644 (file)
@@ -875,7 +875,16 @@ struct lov_mds_md_v1 {            /* LOV EA mds/wire data (little-endian) */
 
 #define XATTR_NAME_ACL_ACCESS   "system.posix_acl_access"
 #define XATTR_NAME_ACL_DEFAULT  "system.posix_acl_default"
+#define XATTR_USER_PREFIX       "user."
+#define XATTR_TRUSTED_PREFIX    "trusted."
+#define XATTR_SECURITY_PREFIX   "security."
+#define XATTR_LUSTRE_PREFIX     "lustre."
+
 #define XATTR_NAME_LOV          "trusted.lov"
+#define XATTR_NAME_LMA          "trusted.lma"
+#define XATTR_NAME_LMV          "trusted.lmv"
+#define XATTR_NAME_LINK         "trusted.link"
+
 
 struct lov_mds_md_v3 {            /* LOV EA mds/wire data (little-endian) */
         __u32 lmm_magic;          /* magic number = LOV_MAGIC_V3 */
index 9bf9437..dac9f11 100644 (file)
@@ -71,9 +71,6 @@ int mds_lov_prepare_objids(struct obd_device *obd, struct lov_mds_md *lmm);
 void mds_lov_update_objids(struct obd_device *obd, struct lov_mds_md *lmm);
 
 
-#define MDS_LOV_MD_NAME  "trusted.lov"
-#define MDS_LMV_MD_NAME  "trusted.lmv"
-#define MDS_LINK_EA_NAME "trusted.link"
 #define MDD_OBD_NAME     "mdd_obd"
 #define MDD_OBD_UUID     "mdd_obd_uuid"
 #define MDD_OBD_TYPE     "mds"
index d66a025..0957d09 100644 (file)
 
 #include "llite_internal.h"
 
-#define XATTR_USER_PREFIX       "user."
-#define XATTR_TRUSTED_PREFIX    "trusted."
-#define XATTR_SECURITY_PREFIX   "security."
-#define XATTR_LUSTRE_PREFIX     "lustre."
-
 #define XATTR_USER_T            (1)
 #define XATTR_TRUSTED_T         (2)
 #define XATTR_SECURITY_T        (3)
@@ -239,7 +234,8 @@ int ll_setxattr(struct dentry *dentry, const char *name,
 
                 return rc;
 
-        } else if (strcmp(name, "trusted.lma") == 0) /* b17288: ignore common_ea */
+        } else if (strcmp(name, XATTR_NAME_LMA) == 0 ||
+                   strcmp(name, XATTR_NAME_LINK) == 0)
                 return 0;
 
         return ll_setxattr_common(inode, name, value, size, flags,
index 9b54aba..f00d307 100644 (file)
@@ -2200,18 +2200,18 @@ struct lu_buf *mdd_links_get(const struct lu_env *env,
                 return ERR_PTR(-ENOMEM);
 
         capa = mdd_object_capa(env, mdd_obj);
-        rc = mdo_xattr_get(env, mdd_obj, buf, MDS_LINK_EA_NAME, capa);
+        rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
         if (rc == -ERANGE) {
                 /* Buf was too small, figure out what we need. */
                 buf->lb_buf = NULL;
                 buf->lb_len = 0;
-                rc = mdo_xattr_get(env, mdd_obj, buf, MDS_LINK_EA_NAME, capa);
+                rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
                 if (rc < 0)
                         return ERR_PTR(rc);
                 buf = mdd_buf_alloc(env, rc);
                 if (buf->lb_buf == NULL)
                         return ERR_PTR(-ENOMEM);
-                rc = mdo_xattr_get(env, mdd_obj, buf, MDS_LINK_EA_NAME, capa);
+                rc = mdo_xattr_get(env, mdd_obj, buf, XATTR_NAME_LINK, capa);
         }
         if (rc < 0)
                 return ERR_PTR(rc);
@@ -2340,7 +2340,7 @@ static int mdd_links_add(const struct lu_env *env,
         leh = buf->lb_buf;
         rc = __mdd_xattr_set(env, mdd_obj,
                              mdd_buf_get_const(env, buf->lb_buf, leh->leh_len),
-                             MDS_LINK_EA_NAME, 0, handle);
+                             XATTR_NAME_LINK, 0, handle);
         if (rc)
                 CERROR("link_ea add failed %d "DFID"\n", rc,
                        PFID(mdd_object_fid(mdd_obj)));
@@ -2418,7 +2418,7 @@ static int mdd_links_rename(const struct lu_env *env,
 
         rc = __mdd_xattr_set(env, mdd_obj,
                              mdd_buf_get_const(env, buf->lb_buf, leh->leh_len),
-                             MDS_LINK_EA_NAME, 0, handle);
+                             XATTR_NAME_LINK, 0, handle);
 
 out:
         if (rc)
index 6d62c7e..197ffd6 100644 (file)
@@ -243,7 +243,7 @@ static int mdd_lov_set_stripe_md(const struct lu_env *env,
                 RETURN(rc);
         obd_free_memmd(lov_exp, &lsm);
 
-        rc = mdd_xattr_set_txn(env, obj, buf, MDS_LOV_MD_NAME, 0, handle);
+        rc = mdd_xattr_set_txn(env, obj, buf, XATTR_NAME_LOV, 0, handle);
 
         CDEBUG(D_INFO, "set lov ea of "DFID" rc %d \n", PFID(mdo2fid(obj)), rc);
         RETURN(rc);
@@ -270,7 +270,7 @@ static int mdd_lov_set_dir_md(const struct lu_env *env,
             lum->lmm_stripe_offset == (typeof(lum->lmm_stripe_offset))(-1) &&
             lum->lmm_magic != LOV_USER_MAGIC_V3) {
                 rc = mdd_xattr_set_txn(env, obj, &LU_BUF_NULL,
-                                       MDS_LOV_MD_NAME, 0, handle);
+                                       XATTR_NAME_LOV, 0, handle);
                 if (rc == -ENODATA)
                         rc = 0;
                 CDEBUG(D_INFO, "delete lov ea of "DFID" rc %d \n",
@@ -316,7 +316,7 @@ int mdd_lov_set_md(const struct lu_env *env, struct mdd_object *pobj,
                         rc = mdd_lov_set_stripe_md(env, child, buf, handle);
                 } else {
                         rc = mdd_xattr_set_txn(env, child, buf,
-                                               MDS_LOV_MD_NAME, 0, handle);
+                                               XATTR_NAME_LOV, 0, handle);
                 }
         } else if (S_ISDIR(mode)) {
                 if (lmmp == NULL && lmm_size == 0) {
@@ -327,11 +327,11 @@ int mdd_lov_set_md(const struct lu_env *env, struct mdd_object *pobj,
                         /* Get parent dir stripe and set */
                         if (pobj != NULL)
                                 rc = mdd_get_md_locked(env, pobj, lmm, &size,
-                                                       MDS_LOV_MD_NAME);
+                                                       XATTR_NAME_LOV);
                         if (rc > 0) {
                                 buf = mdd_buf_get(env, lmm, size);
                                 rc = mdd_xattr_set_txn(env, child, buf,
-                                               MDS_LOV_MD_NAME, 0, handle);
+                                               XATTR_NAME_LOV, 0, handle);
                                 if (rc)
                                         CERROR("error on copy stripe info: rc "
                                                 "= %d\n", rc);
@@ -441,7 +441,7 @@ int mdd_lov_create(const struct lu_env *env, struct mdd_device *mdd,
 
                         rc = mdd_get_md_locked(env, parent, _lmm,
                                                &_lmm_size,
-                                               MDS_LOV_MD_NAME);
+                                               XATTR_NAME_LOV);
                         if (rc > 0)
                                 rc = obd_iocontrol(OBD_IOC_LOV_SETSTRIPE,
                                                    lov_exp, 0, &lsm, _lmm);
@@ -617,7 +617,7 @@ int mdd_lov_destroy(const struct lu_env *env, struct mdd_device *mdd,
         /* get lov ea */
 
         rc = mdd_get_md_locked(env, obj, ma->ma_lmm, &ma->ma_lmm_size,
-                               MDS_LOV_MD_NAME);
+                               XATTR_NAME_LOV);
 
         if (rc <= 0) {
                 CWARN("Get lov ea failed for "DFID" rc = %d\n",
index 4ada099..1efe365 100644 (file)
@@ -605,7 +605,7 @@ static int __mdd_lmm_get(const struct lu_env *env,
                 RETURN(0);
 
         rc = mdd_get_md(env, mdd_obj, ma->ma_lmm, &ma->ma_lmm_size,
-                        MDS_LOV_MD_NAME);
+                        XATTR_NAME_LOV);
 
         if (rc == 0 && (ma->ma_need & MA_LOV_DEF)) {
                 rc = mdd_get_default_md(mdd_obj, ma->ma_lmm,
@@ -642,7 +642,7 @@ static int __mdd_lmv_get(const struct lu_env *env,
                 RETURN(0);
 
         rc = mdd_get_md(env, mdd_obj, ma->ma_lmv, &ma->ma_lmv_size,
-                        MDS_LMV_MD_NAME);
+                        XATTR_NAME_LMV);
         if (rc > 0) {
                 ma->ma_valid |= MA_LMV;
                 rc = 0;
@@ -1217,7 +1217,7 @@ static int mdd_attr_set(const struct lu_env *env, struct md_object *obj,
                         GOTO(cleanup, rc = -ENOMEM);
 
                 rc = mdd_get_md_locked(env, mdd_obj, lmm, &lmm_size,
-                                MDS_LOV_MD_NAME);
+                                XATTR_NAME_LOV);
 
                 if (rc < 0)
                         GOTO(cleanup, rc);
@@ -1604,7 +1604,7 @@ static int mdd_object_create(const struct lu_env *env,
 
                 rc = __mdd_xattr_set(env, mdd_obj,
                                      mdd_buf_get_const(env, lmv, lmv_size),
-                                     MDS_LMV_MD_NAME, 0, handle);
+                                     XATTR_NAME_LMV, 0, handle);
                 if (rc)
                         GOTO(unlock, rc);
 
index 5a93bfe..561a395 100644 (file)
@@ -280,8 +280,6 @@ int mdt_reint_setxattr(struct mdt_thread_info *info,
 {
         struct ptlrpc_request   *req = mdt_info_req(info);
         struct md_ucred         *uc  = mdt_ucred(info);
-        const char               user_string[] = "user.";
-        const char               trust_string[] = "trusted.";
         struct mdt_lock_handle  *lh;
         struct req_capsule      *pill = info->mti_pill;
         const struct lu_env     *env  = info->mti_env;
@@ -330,13 +328,19 @@ int mdt_reint_setxattr(struct mdt_thread_info *info,
         if (!xattr_name)
                 GOTO(out, rc = err_serious(-EFAULT));
 
-        if (strncmp(xattr_name, trust_string, sizeof(trust_string) - 1) == 0) {
-                if (strcmp(xattr_name + 8, XATTR_NAME_LOV) == 0)
+        if (strncmp(xattr_name, XATTR_USER_PREFIX,
+                    sizeof(XATTR_USER_PREFIX) - 1) == 0) {
+                if (strcmp(xattr_name, XATTR_NAME_LOV) == 0)
                         GOTO(out, rc = -EACCES);
+                if (strcmp(xattr_name, XATTR_NAME_LMA) == 0)
+                        GOTO(out, rc = 0);
+                if (strcmp(xattr_name, XATTR_NAME_LINK) == 0)
+                        GOTO(out, rc = 0);
         }
 
         if (!(req->rq_export->exp_connect_flags & OBD_CONNECT_XATTR) &&
-            (strncmp(xattr_name, user_string, sizeof(user_string) - 1) == 0)) {
+            (strncmp(xattr_name, XATTR_USER_PREFIX,
+                     sizeof(XATTR_USER_PREFIX) - 1) == 0)) {
                 GOTO(out, rc = -EOPNOTSUPP);
         }
 
index 0d4b6be..55b97d7 100644 (file)
@@ -85,7 +85,6 @@
 /* llo_* api support */
 #include <md_object.h>
 
-static const char MDT_XATTR_NAME[] = "trusted.lma";
 static const char dot[] = ".";
 static const char dotdot[] = "..";
 static const char remote_obj_dir[] = "REM_OBJ_DIR";
@@ -1718,7 +1717,7 @@ static int osd_ea_fid_set(const struct lu_env *env, struct dt_object *dt,
 
         return __osd_xattr_set(env, dt,
                                osd_buf_get(env, mdt_attrs, sizeof *mdt_attrs),
-                               MDT_XATTR_NAME, LU_XATTR_CREATE);
+                               XATTR_NAME_LMA, LU_XATTR_CREATE);
 
 }
 
@@ -1760,7 +1759,7 @@ static int osd_ea_fid_get(const struct lu_env *env, struct dentry *dentry,
 
         LASSERT(inode->i_op != NULL && inode->i_op->getxattr != NULL);
 
-        rc = inode->i_op->getxattr(dentry, MDT_XATTR_NAME, (void *)mdt_attrs,
+        rc = inode->i_op->getxattr(dentry, XATTR_NAME_LMA, (void *)mdt_attrs,
                                    sizeof *mdt_attrs);
 
         if (rc > 0) {