ENTRY;
lu_buf_check_and_alloc(&mdd_env_info(env)->mti_xattr_buf,
- mdd_obj2mdd_dev(o)->mdd_dt_conf.ddp_max_ea_size);
+ MIN(mdd_obj2mdd_dev(o)->mdd_dt_conf.ddp_max_ea_size,
+ XATTR_SIZE_MAX));
buf = mdd_env_info(env)->mti_xattr_buf;
+ if (buf.lb_buf == NULL)
+ RETURN(-ENOMEM);
+
+ if (buf.lb_len > XATTR_SIZE_MAX)
+ buf.lb_len = XATTR_SIZE_MAX;
+
rc = mdo_xattr_get(env, o, &buf, XATTR_NAME_ACL_ACCESS);
if ((rc == -EOPNOTSUPP) || (rc == -ENODATA))
RETURN(0);
ENTRY;
lu_buf_check_and_alloc(&mdd_env_info(env)->mti_xattr_buf,
- mdd_obj2mdd_dev(obj)->mdd_dt_conf.ddp_max_ea_size);
+ MIN(mdd_obj2mdd_dev(obj)->mdd_dt_conf.ddp_max_ea_size,
+ XATTR_SIZE_MAX));
buf = mdd_env_info(env)->mti_xattr_buf;
+ if (buf.lb_buf == NULL)
+ RETURN(-ENOMEM);
+
+ if (buf.lb_len > XATTR_SIZE_MAX)
+ buf.lb_len = XATTR_SIZE_MAX;
+
rc = mdo_xattr_get(env, obj, &buf, XATTR_NAME_ACL_ACCESS);
if (rc <= 0)
RETURN(rc ? : -EACCES);
#include <lustre_linkea.h>
+/* Maximum EA size is limited by LNET_MTU for remote objects */
+#define OSD_MAX_EA_SIZE 1048364
+
int ldiskfs_pdo = 1;
module_param(ldiskfs_pdo, int, 0644);
MODULE_PARM_DESC(ldiskfs_pdo, "ldiskfs with parallel directory operations");
#endif
param->ddp_max_ea_size = sb->s_blocksize - ea_overhead;
+ if (param->ddp_max_ea_size > OSD_MAX_EA_SIZE)
+ param->ddp_max_ea_size = OSD_MAX_EA_SIZE;
+
/* Preferred RPC size for efficient disk IO. 4MB shows good
* all-around performance for ldiskfs, but use bigalloc chunk size
* by default if larger. */
buf_count++;
}
repsize += sizeof(*reply);
- repsize = (repsize + OUT_UPDATE_REPLY_SIZE - 1) &
- ~(OUT_UPDATE_REPLY_SIZE - 1);
+ if (repsize < OUT_UPDATE_REPLY_SIZE)
+ repsize = OUT_UPDATE_REPLY_SIZE;
LASSERT(buf_count > 0);
req = ptlrpc_request_alloc(imp, &RQF_OUT_UPDATE);
unsigned int i;
size_t update_size;
- if (((reply_size + 7) >> 3) >= 1ULL << 16)
+ if (reply_size >= LNET_MTU)
return -EINVAL;
/* Check whether the packing exceeding the maxima update length */
}
run_test 315 "read should be accounted"
+test_316() {
+ [ $MDSCOUNT -lt 2 ] && skip "needs >= 2 MDTs" && return 0
+ large_xattr_enabled || { skip "large_xattr disabled" && return; }
+
+ rm -rf $DIR/$tdir/d
+ mkdir -p $DIR/$tdir/d
+ chown nobody $DIR/$tdir/d
+ touch $DIR/$tdir/d/file
+
+ $LFS mv -M1 $DIR/$tdir/d || error "lfs mv failed"
+}
+run_test 316 "lfs mv"
+
test_fake_rw() {
local read_write=$1
if [ "$read_write" = "write" ]; then