*/
int (*do_declare_xattr_set)(const struct lu_env *env,
struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf,
const char *name,
int fl,
static inline int dt_declare_xattr_set(const struct lu_env *env,
struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf,
const char *name, int fl,
struct thandle *th)
if (!dt->do_ops->do_declare_xattr_set)
return 0;
- return dt->do_ops->do_declare_xattr_set(env, dt, buf, name, fl, th);
+ return dt->do_ops->do_declare_xattr_set(env, dt, attr, buf, name,
+ fl, th);
}
static inline int dt_xattr_set(const struct lu_env *env,
if (IS_ERR(handle))
RETURN(PTR_ERR(handle));
- rc = dt_declare_xattr_set(env, child, &buf, XATTR_NAME_FID, 0, handle);
+ rc = dt_declare_xattr_set(env, child, NULL, &buf, XATTR_NAME_FID, 0,
+ handle);
if (rc != 0)
GOTO(stop, rc);
GOTO(stop, rc);
lfsck_buf_init(&lov_buf, ea_buf->lb_buf, size);
- rc = dt_declare_xattr_set(env, pobj, &lov_buf, XATTR_NAME_LOV,
+ rc = dt_declare_xattr_set(env, pobj, NULL, &lov_buf, XATTR_NAME_LOV,
LU_XATTR_CREATE, th);
if (rc != 0)
GOTO(stop, rc);
lfsck_buf_init(&linkea_buf, ldata.ld_buf->lb_buf,
ldata.ld_leh->leh_len);
- rc = dt_declare_xattr_set(env, pobj, &linkea_buf,
+ rc = dt_declare_xattr_set(env, pobj, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(th))
GOTO(unlock, rc = PTR_ERR(th));
- rc = dt_declare_xattr_set(env, parent, ea_buf, XATTR_NAME_LOV,
+ rc = dt_declare_xattr_set(env, parent, NULL, ea_buf, XATTR_NAME_LOV,
LU_XATTR_REPLACE, th);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(handle))
GOTO(unlock_layout, rc = PTR_ERR(handle));
- rc = dt_declare_xattr_set(env, parent, buf, XATTR_NAME_LOV,
- fl, handle);
+ rc = dt_declare_xattr_set(env, parent, NULL, buf,
+ XATTR_NAME_LOV, fl, handle);
if (rc != 0)
GOTO(stop, rc);
if (rc != 0)
GOTO(stop, rc);
- rc = dt_declare_xattr_set(env, child, buf, XATTR_NAME_FID,
+ rc = dt_declare_xattr_set(env, child, NULL, buf, XATTR_NAME_FID,
LU_XATTR_CREATE, handle);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(handle))
GOTO(unlock1, rc = PTR_ERR(handle));
- rc = dt_declare_xattr_set(env, child, buf, XATTR_NAME_FID, 0, handle);
+ rc = dt_declare_xattr_set(env, child, NULL, buf, XATTR_NAME_FID, 0,
+ handle);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(handle))
GOTO(log, rc = PTR_ERR(handle));
- rc = dt_declare_xattr_set(env, parent, buf, XATTR_NAME_LOV,
+ rc = dt_declare_xattr_set(env, parent, NULL, buf, XATTR_NAME_LOV,
LU_XATTR_REPLACE, handle);
if (rc != 0)
GOTO(stop, rc);
GOTO(out, rc = PTR_ERR(handle));
lfsck_buf_init(&ea_buf, buf->lb_buf, size);
- rc = dt_declare_xattr_set(env, obj, &ea_buf, XATTR_NAME_LOV,
- LU_XATTR_REPLACE, handle);
+ rc = dt_declare_xattr_set(env, obj, NULL, &ea_buf,
+ XATTR_NAME_LOV, LU_XATTR_REPLACE,
+ handle);
if (rc != 0)
GOTO(out, rc);
/* 5a. insert linkEA for child */
lfsck_buf_init(&linkea_buf, ldata.ld_buf->lb_buf,
ldata.ld_leh->leh_len);
- rc = dt_declare_xattr_set(env, child, &linkea_buf,
+ rc = dt_declare_xattr_set(env, child, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
/* 5a. insert linkEA for child */
lfsck_buf_init(&linkea_buf, ldata.ld_buf->lb_buf,
ldata.ld_leh->leh_len);
- rc = dt_declare_xattr_set(env, child, &linkea_buf,
+ rc = dt_declare_xattr_set(env, child, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(handle))
GOTO(log, rc = PTR_ERR(handle));
- rc = dt_declare_xattr_set(env, obj,
+ rc = dt_declare_xattr_set(env, obj, NULL,
lfsck_buf_get(env, com->lc_file_disk, len),
XATTR_NAME_LFSCK_NAMESPACE, 0, handle);
if (rc != 0)
GOTO(out, rc);
if (bitmap != NULL) {
- rc = dt_declare_xattr_set(env, obj,
+ rc = dt_declare_xattr_set(env, obj, NULL,
lfsck_buf_get(env, bitmap, nbits >> 3),
XATTR_NAME_LFSCK_BITMAP, 0, handle);
if (rc != 0)
rc = dt_declare_xattr_del(env, obj, XATTR_NAME_LINK, handle);
if (rc == 0)
/* For insert new linkEA entry. */
- rc = dt_declare_xattr_set(env, obj,
+ rc = dt_declare_xattr_set(env, obj, NULL,
lfsck_buf_get_const(env, NULL, MAX_LINKEA_SIZE),
XATTR_NAME_LINK, 0, handle);
return rc;
GOTO(stop, rc);
}
- rc = dt_declare_xattr_set(env, orphan, &linkea_buf,
+ rc = dt_declare_xattr_set(env, orphan, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(th))
RETURN(PTR_ERR(th));
- rc = dt_declare_xattr_set(env, obj, &buf, XATTR_NAME_LMV, 0, th);
+ rc = dt_declare_xattr_set(env, obj, NULL, &buf, XATTR_NAME_LMV, 0, th);
if (rc)
GOTO(stop, rc);
}
if (parent_lmv_lost) {
- rc = dt_declare_xattr_set(env, parent, &buf, XATTR_NAME_LMV,
- 0, th);
+ rc = dt_declare_xattr_set(env, parent, NULL, &buf,
+ XATTR_NAME_LMV, 0, th);
if (rc)
GOTO(stop, rc);
}
lmv->lmv_master_mdt_index = lfsck_dev_idx(lfsck);
lfsck_lmv_header_cpu_to_le(lmv2, lmv);
lfsck_buf_init(&lmv_buf, lmv2, sizeof(*lmv2));
- rc = dt_declare_xattr_set(env, orphan, &lmv_buf, XATTR_NAME_LMV,
- 0, th);
+ rc = dt_declare_xattr_set(env, orphan, NULL, &lmv_buf,
+ XATTR_NAME_LMV, 0, th);
if (rc != 0)
GOTO(stop, rc);
}
lfsck_buf_init(&linkea_buf, ldata.ld_buf->lb_buf,
ldata.ld_leh->leh_len);
- rc = dt_declare_xattr_set(env, orphan, &linkea_buf,
+ rc = dt_declare_xattr_set(env, orphan, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
GOTO(unlock1, rc = PTR_ERR(th));
if (buflen != 0)
- rc = dt_declare_xattr_set(env, obj, &linkea_buf,
+ rc = dt_declare_xattr_set(env, obj, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
else
rc = dt_declare_xattr_del(env, obj, XATTR_NAME_LINK, th);
lfsck_buf_init(&linkea_buf, ldata->ld_buf->lb_buf,
ldata->ld_leh->leh_len);
- rc = dt_declare_xattr_set(env, obj, &linkea_buf,
+ rc = dt_declare_xattr_set(env, obj, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
if (rc != 0)
GOTO(stop, rc);
- rc = dt_declare_xattr_set(env, obj, &linkea_buf,
+ rc = dt_declare_xattr_set(env, obj, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(th))
GOTO(log, rc = PTR_ERR(th));
- rc = dt_declare_xattr_set(env, obj,
+ rc = dt_declare_xattr_set(env, obj, NULL,
lfsck_buf_get_const(env, NULL, MAX_LINKEA_SIZE),
XATTR_NAME_LINK, 0, th);
if (rc != 0)
lfsck_buf_init(&linkea_buf, ldata.ld_buf->lb_buf,
ldata.ld_leh->leh_len);
- rc = dt_declare_xattr_set(env, obj, &linkea_buf,
+ rc = dt_declare_xattr_set(env, obj, NULL, &linkea_buf,
XATTR_NAME_LINK, LU_XATTR_REPLACE, handle);
if (rc)
GOTO(stop, rc);
lfsck_lmv_header_cpu_to_le(lmv2, lmv2);
lfsck_buf_init(&lmv_buf, lmv2, sizeof(*lmv2));
- rc = dt_declare_xattr_set(env, child, &lmv_buf,
+ rc = dt_declare_xattr_set(env, child, NULL, &lmv_buf,
XATTR_NAME_LMV, 0, th);
if (rc != 0)
GOTO(stop, rc);
/* 6a. insert linkEA for child */
lfsck_buf_init(&linkea_buf, ldata.ld_buf->lb_buf,
ldata.ld_leh->leh_len);
- rc = dt_declare_xattr_set(env, child, &linkea_buf,
+ rc = dt_declare_xattr_set(env, child, NULL, &linkea_buf,
XATTR_NAME_LINK, 0, th);
if (rc != 0)
GOTO(stop, rc);
if (IS_ERR(th))
RETURN(PTR_ERR(th));
- rc = dt_declare_xattr_set(env, obj, &linkea_buf,
+ rc = dt_declare_xattr_set(env, obj, NULL, &linkea_buf,
XATTR_NAME_LINK, fl, th);
if (rc != 0)
GOTO(stop, rc);
if (dt_object_remote(obj))
th->th_sync = 1;
- rc = dt_declare_xattr_set(env, obj, buf, XATTR_NAME_LMV, 0, th);
+ rc = dt_declare_xattr_set(env, obj, NULL, buf, XATTR_NAME_LMV, 0, th);
if (rc != 0)
GOTO(stop, rc);
*/
static int lod_declare_xattr_set(const struct lu_env *env,
struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf,
const char *name, int fl,
struct thandle *th)
{
struct lod_thread_info *info = lod_env_info(env);
struct dt_object *next = dt_object_child(dt);
- struct lu_attr *attr = &info->lti_attr;
struct lod_object *lo = lod_dt_obj(dt);
__u32 mode;
int rc;
LU_XATTR_PURGE)) &&
(strcmp(name, XATTR_NAME_LOV) == 0 ||
strcmp(name, XATTR_LUSTRE_LOV) == 0)) {
+ struct lu_attr *lattr = &lod_env_info(env)->lti_attr;
+
/*
* this is a request to create object's striping.
*
* LU_XATTR_REPLACE is set to indicate a layout swap
*/
if (dt_object_exists(dt)) {
- rc = dt_attr_get(env, next, attr);
+ rc = dt_attr_get(env, next, lattr);
if (rc)
RETURN(rc);
} else {
- memset(attr, 0, sizeof(*attr));
- attr->la_valid = LA_TYPE | LA_MODE;
- attr->la_mode = S_IFREG;
+ memset(lattr, 0, sizeof(*lattr));
+ lattr->la_valid = LA_TYPE | LA_MODE;
+ lattr->la_mode = S_IFREG;
}
- rc = lod_declare_striped_create(env, dt, attr, buf, th);
+ rc = lod_declare_striped_create(env, dt, lattr, buf, th);
} else if (fl & LU_XATTR_MERGE) {
LASSERT(strcmp(name, XATTR_NAME_LOV) == 0 ||
strcmp(name, XATTR_LUSTRE_LOV) == 0);
lu_object_fid(&dt->do_lu),
buf, name, fl);
- rc = dt_declare_xattr_set(env, dt, buf, name, fl, sub_th);
+ rc = dt_declare_xattr_set(env, dt, NULL, buf, name, fl, sub_th);
RETURN(rc);
}
buf.lb_buf = &lmv_default;
buf.lb_len = sizeof(lmv_default);
- rc = dt_declare_xattr_set(env, root, &buf,
+ rc = dt_declare_xattr_set(env, root, NULL, &buf,
XATTR_NAME_DEFAULT_LMV, 0,
th);
if (rc)
buf = &LU_BUF_NULL;
}
- rc = dt_declare_xattr_set(env, mdd_object_child(son), buf,
+ rc = dt_declare_xattr_set(env, mdd_object_child(son), NULL, buf,
XATTR_NAME_LOV, 0, handle);
if (rc)
GOTO(stop, rc);
struct dt_object *next = mdd_object_child(obj);
int rc;
- rc = dt_declare_xattr_set(env, next, buf, name, fl, handle);
+ rc = dt_declare_xattr_set(env, next, NULL, buf, name, fl, handle);
if (rc >= 0 &&
(strcmp(name, LL_XATTR_NAME_ENCRYPTION_CONTEXT) == 0 ||
strcmp(name, LL_XATTR_NAME_ENCRYPTION_CONTEXT_OLD) == 0)) {
LASSERT(o);
vbuf.lb_buf = NULL;
vbuf.lb_len = sizeof(dt_obj_version_t);
- return dt_declare_xattr_set(env, o, &vbuf, xname, 0, th);
+ return dt_declare_xattr_set(env, o, NULL, &vbuf, xname, 0, th);
}
EXPORT_SYMBOL(dt_declare_version_set);
vbuf.lb_buf = NULL;
vbuf.lb_len = sizeof(dt_obj_version_t);
- return dt_declare_xattr_set(env, o, &vbuf, XATTR_NAME_DATAVER, 0, th);
+ return dt_declare_xattr_set(env, o, NULL, &vbuf, XATTR_NAME_DATAVER, 0,
+ th);
}
EXPORT_SYMBOL(dt_declare_data_version_set);
dti->dti_lb.lb_buf = NULL;
dti->dti_lb.lb_len = sizeof(dti->dti_lma);
- rc = dt_declare_xattr_set(env, o, &dti->dti_lb, XATTR_NAME_LMA, 0, th);
+ rc = dt_declare_xattr_set(env, o, NULL, &dti->dti_lb, XATTR_NAME_LMA, 0,
+ th);
RETURN(rc);
}
if (IS_ERR(th))
RETURN(rc);
- rc = dt_declare_xattr_set(env, obj, &lbuf, XATTR_NAME_LMA, fl, th);
+ rc = dt_declare_xattr_set(env, obj, NULL, &lbuf, XATTR_NAME_LMA, fl,
+ th);
if (rc)
GOTO(stop, rc);
if (oa->o_valid & (OBD_MD_FLFID | OBD_MD_FLOSTLAYOUT |
OBD_MD_LAYOUT_VERSION)) {
- rc = dt_declare_xattr_set(env, dt_obj, &info->fti_buf,
+ rc = dt_declare_xattr_set(env, dt_obj, NULL, &info->fti_buf,
XATTR_NAME_FID, 0, th);
if (rc)
GOTO(out_tx, rc);
info->fti_buf.lb_buf = ff;
info->fti_buf.lb_len = sizeof(*ff);
- rc = dt_declare_xattr_set(env, ofd_object_child(fo), &info->fti_buf,
- XATTR_NAME_FID, 0, th);
+ rc = dt_declare_xattr_set(env, ofd_object_child(fo), NULL,
+ &info->fti_buf, XATTR_NAME_FID, 0, th);
if (rc)
GOTO(stop, rc);
info->fti_buf.lb_buf = ff;
info->fti_buf.lb_len = sizeof(*ff);
rc = dt_declare_xattr_set(env, ofd_object_child(fo),
- &info->fti_buf, XATTR_NAME_FID, 0,
+ NULL, &info->fti_buf, XATTR_NAME_FID, 0,
th);
if (rc)
GOTO(stop, rc);
info->fti_buf.lb_buf = ff;
info->fti_buf.lb_len = sizeof(*ff);
- rc = dt_declare_xattr_set(env, ofd_object_child(fo), &info->fti_buf,
- XATTR_NAME_FID, 0, th);
+ rc = dt_declare_xattr_set(env, ofd_object_child(fo), NULL,
+ &info->fti_buf, XATTR_NAME_FID, 0, th);
if (rc)
GOTO(stop, rc);
static int osd_declare_xattr_set(const struct lu_env *env,
struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf, const char *name,
int fl, struct thandle *handle)
{
int osd_xattr_get(const struct lu_env *env, struct dt_object *dt,
struct lu_buf *buf, const char *name);
int osd_declare_xattr_set(const struct lu_env *env, struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf, const char *name,
int fl, struct thandle *handle);
int osd_xattr_set(const struct lu_env *env, struct dt_object *dt,
}
int osd_declare_xattr_set(const struct lu_env *env, struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf, const char *name,
int fl, struct thandle *handle)
{
int osp_xattr_get(const struct lu_env *env, struct dt_object *dt,
struct lu_buf *buf, const char *name);
int osp_declare_xattr_set(const struct lu_env *env, struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf, const char *name,
int flag, struct thandle *th);
int osp_xattr_set(const struct lu_env *env, struct dt_object *dt,
* \retval negative error number on failure
*/
int osp_declare_xattr_set(const struct lu_env *env, struct dt_object *dt,
+ const struct lu_attr *attr,
const struct lu_buf *buf, const char *name,
int flag, struct thandle *th)
{
struct tx_arg *arg;
int rc;
- rc = dt_declare_xattr_set(env, dt_obj, buf, name, flags, th);
+ rc = dt_declare_xattr_set(env, dt_obj, NULL, buf, name, flags, th);
if (rc != 0)
return rc;