of Lustre filesystem with 4K stack may cause a stack overflow. For
more information, please refer to bugzilla 17630.
+Severity : normal
+Frequency : always with long access acl
+Bugzilla : 17636
+Descriptoin: mds can't pack reply with long acl.
+Details : mds don't control size of acl but they limited by reint/getattr
+ reply buffer.
+
Severity : enhancement
Bugzilla : 18061
Description: Update to SLES10 kernel-2.6.16.60-0.33.
GOTO(out, rc = -EOPNOTSUPP);
}
+ /* currently lustre limit xattr size */
+ if (body->valid & OBD_MD_FLXATTR && !strcmp(xattr_name, XATTR_NAME_ACL_ACCESS)) {
+ xattrlen = lustre_msg_buflen(req->rq_reqmsg,
+ REQ_REC_OFF + 2);
+
+ if (xattrlen > LUSTRE_POSIX_ACL_MAX_SIZE)
+ GOTO(out, -ERANGE);
+ }
+
+
if (!strcmp(xattr_name, XATTR_NAME_ACL_ACCESS))
lockpart |= MDS_INODELOCK_LOOKUP;
xattrlen = lustre_msg_buflen(req->rq_reqmsg,
REQ_REC_OFF + 2);
- if (xattrlen)
- xattr = lustre_msg_buf(req->rq_reqmsg,
- REQ_REC_OFF+2, xattrlen);
+
+ xattr = lustre_msg_buf(req->rq_reqmsg,
+ REQ_REC_OFF+2, xattrlen);
LOCK_INODE_MUTEX(inode);
rc = inode->i_op->setxattr(de, xattr_name, xattr,
mount_client $MOUNT
}
+setup_noconfig() {
+ start_mds
+ start_ost
+ mount_client $MOUNT
+}
+
cleanup_nocli() {
stop_mds || return 201
stop_ost || return 202
}
run_test 47 "server restart does not make client loss lru_resize settings"
+# reformat after this test must need - if test will failed
+# we will have unkillable file at FS
+test_48() { # bug 17636
+ reformat
+ setup_noconfig
+ check_mount || return 2
+
+ $LFS setstripe $MOUNT -c -1 || return 9
+ $LFS getstripe $MOUNT || return 10
+
+ echo "ok" > $MOUNT/widestripe
+ $LFS getstripe $MOUNT/widestripe || return 11
+ # fill acl buffer for avoid expand lsm to them
+ awk -F : '{ print "u:"$1":rwx" }' /etc/passwd | while read acl; do
+ setfacl -m $acl $MOUNT/widestripe
+ done
+
+ stat $MOUNT/widestripe || return 12
+
+ cleanup || error "can't cleanup"
+ return 0
+}
+run_test 48 "too many acls on file"
+
+
equals_msg `basename $0`: test complete
[ -f "$TESTSUITELOG" ] && cat $TESTSUITELOG && grep -q FAIL $TESTSUITELOG && exit 1 || true