#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 */
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"
#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)
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,
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);
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)));
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)
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);
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",
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) {
/* 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);
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);
/* 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",
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,
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;
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);
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);
{
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;
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);
}
/* 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";
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);
}
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) {