generation = obddev->u.cli.cl_import->imp_generation;
if (!it || (it->it_op & (IT_OPEN | IT_CREAT)))
- acl_bufsize = imp->imp_connect_data.ocd_max_easize;
+ acl_bufsize = MIN(imp->imp_connect_data.ocd_max_easize,
+ XATTR_SIZE_MAX);
else
acl_bufsize = LUSTRE_POSIX_ACL_MAX_SIZE_OLD;
if ((int)lockrep->lock_policy_res2 == -ERANGE &&
it->it_op & (IT_OPEN | IT_GETATTR | IT_LOOKUP) &&
- acl_bufsize != imp->imp_connect_data.ocd_max_easize) {
+ acl_bufsize == LUSTRE_POSIX_ACL_MAX_SIZE_OLD) {
mdc_clear_replay_flag(req, -ERANGE);
ptlrpc_req_finished(req);
- acl_bufsize = imp->imp_connect_data.ocd_max_easize;
+ acl_bufsize = MIN(imp->imp_connect_data.ocd_max_easize,
+ XATTR_SIZE_MAX);
goto resend;
}
mdc_setattr_pack(req, op_data, ea, ealen);
req_capsule_set_size(&req->rq_pill, &RMF_ACL, RCL_SERVER,
- req->rq_import->imp_connect_data.ocd_max_easize);
+ MIN(req->rq_import->imp_connect_data.ocd_max_easize,
+ XATTR_SIZE_MAX));
ptlrpc_request_set_replen(req);
rc = mdc_reint(req, LUSTRE_IMP_FULL);
rc = mdc_getattr_common(exp, req);
if (rc) {
- if (rc == -ERANGE &&
- acl_bufsize != imp->imp_connect_data.ocd_max_easize) {
- acl_bufsize = imp->imp_connect_data.ocd_max_easize;
+ if (rc == -ERANGE) {
+ acl_bufsize = MIN(imp->imp_connect_data.ocd_max_easize,
+ XATTR_SIZE_MAX);
mdc_reset_acl_req(req);
goto again;
}
rc = mdc_getattr_common(exp, req);
if (rc) {
- if (rc == -ERANGE &&
- acl_bufsize != imp->imp_connect_data.ocd_max_easize) {
- acl_bufsize = imp->imp_connect_data.ocd_max_easize;
+ if (rc == -ERANGE) {
+ acl_bufsize = MIN(imp->imp_connect_data.ocd_max_easize,
+ XATTR_SIZE_MAX);
mdc_reset_acl_req(req);
goto again;
}
GOTO(out_free, rc = PTR_ERR(handle));
lu_buf_check_and_alloc(&info->mti_xattr_buf,
- mdd->mdd_dt_conf.ddp_max_ea_size);
+ MIN(mdd->mdd_dt_conf.ddp_max_ea_size, XATTR_SIZE_MAX));
acl_buf = info->mti_xattr_buf;
def_acl_buf.lb_buf = info->mti_key;
def_acl_buf.lb_len = sizeof(info->mti_key);
/* Read HSM attrs from disk */
current_buf = lu_buf_check_and_alloc(&info->mti_xattr_buf,
- mdo2mdd(obj)->mdd_dt_conf.ddp_max_ea_size);
+ MIN(mdd_obj2mdd_dev(mdd_obj)->mdd_dt_conf.ddp_max_ea_size,
+ XATTR_SIZE_MAX));
rc = mdo_xattr_get(env, mdd_obj, current_buf, XATTR_NAME_HSM);
rc = lustre_buf2hsm(current_buf->lb_buf, rc, current_mh);
if (rc < 0 && rc != -ENODATA)
exp_connect_large_acl(info->mti_exp) &&
buf->lb_buf != info->mti_big_acl) {
if (info->mti_big_acl == NULL) {
+ info->mti_big_aclsize =
+ MIN(mdt->mdt_max_ea_size,
+ XATTR_SIZE_MAX);
OBD_ALLOC_LARGE(info->mti_big_acl,
- mdt->mdt_max_ea_size);
+ info->mti_big_aclsize);
if (info->mti_big_acl == NULL) {
+ info->mti_big_aclsize = 0;
CERROR("%s: unable to grow "
DFID" ACL buffer\n",
mdt_obd_name(mdt),
PFID(mdt_object_fid(o)));
RETURN(-ENOMEM);
}
-
- info->mti_big_aclsize =
- mdt->mdt_max_ea_size;
}
CDEBUG(D_INODE, "%s: grow the "DFID
" ACL buffer to size %d\n",
mdt_obd_name(mdt),
PFID(mdt_object_fid(o)),
- mdt->mdt_max_ea_size);
+ info->mti_big_aclsize);
buf->lb_buf = info->mti_big_acl;
buf->lb_len = info->mti_big_aclsize;