On 22/02/2023 22:15, Zorro Lang wrote:
On Tue, Feb 21, 2023 at 11:22:02AM -0800, Darrick J. Wong wrote:
On Sat, Feb 18, 2023 at 02:04:36PM +0800, Zorro Lang wrote:
On Fri, Feb 17, 2023 at 09:09:11AM -0800, Darrick J. Wong wrote:
On Fri, Feb 17, 2023 at 08:45:58PM +0800, xiubli@xxxxxxxxxx wrote:
From: Xiubo Li <xiubli@xxxxxxxxxx>
If the CONFIG_CEPH_FS_SECURITY_LABEL is enabled the kernel ceph
itself will set the security.selinux extended attribute to MDS.
And it will also eat some space of the total size.
Fixes: https://tracker.ceph.com/issues/58742
Signed-off-by: Xiubo Li <xiubli@xxxxxxxxxx>
---
tests/generic/020 | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/tests/generic/020 b/tests/generic/020
index be5cecad..594535b5 100755
--- a/tests/generic/020
+++ b/tests/generic/020
@@ -150,9 +150,11 @@ _attr_get_maxval_size()
# it imposes a maximum size for the full set of xattrs
# names+values, which by default is 64K. Compute the maximum
# taking into account the already existing attributes
- max_attrval_size=$(getfattr --dump -e hex $filename 2>/dev/null | \
+ size=$(getfattr --dump -e hex $filename 2>/dev/null | \
awk -F "=0x" '/^user/ {len += length($1) + length($2) / 2} END {print len}')
- max_attrval_size=$((65536 - $max_attrval_size - $max_attrval_namelen))
+ selinux_size=$(getfattr -n 'security.selinux' --dump -e hex $filename 2>/dev/null | \
+ awk -F "=0x" '/^security/ {len += length($1) + length($2) / 2} END {print len}')
+ max_attrval_size=$((65536 - $size - $selinux_size - $max_attrval_namelen))
The max_attrval_size isn't a local variable, due to we need it to be global.
But the "size" and "selinux_size" look like not global variable, so better
to be *local*.
Sorry I missed this.
And now fixed it and sent out the V2.
Thanks
- Xiubo
If this is a ceph bug, then why is the change being applied to the
section for FSTYP=ext* ? Why not create a case statement for ceph?
Hi Darrick,
Looks like this change is in ceph section [1], did you hit any errors when
you merge it?
ahahaa, diff tried to merge that hunk into _attr_get_max and not
_attr_get_maxval_size, and I didn't notice. Question withdrawn
with apologies. :/
Never mind. If there's not objection from you or ceph list, I'll merge this
patch after it changes as above :)
Thanks,
Zorro
--D
Thanks,
Zorro
[1]
_attr_get_maxval_size()
{
local max_attrval_namelen="$1"
local filename="$2"
# Set max attr value size in bytes based on fs type
case "$FSTYP" in
...
...
ceph)
# CephFS does not have a maximum value for attributes. Instead,
# it imposes a maximum size for the full set of xattrs
# names+values, which by default is 64K. Compute the maximum
# taking into account the already existing attributes
====> max_attrval_size=$(getfattr --dump -e hex $filename 2>/dev/null | \
awk -F "=0x" '/^user/ {len += length($1) + length($2) / 2} END {print len}')
====> max_attrval_size=$((65536 - $max_attrval_size - $max_attrval_namelen))
--D
;;
*)
# Assume max ~1 block of attrs
--
2.31.1
--
Best Regards,
Xiubo Li (李秀波)
Email: xiubli@xxxxxxxxxx/xiubli@xxxxxxx
Slack: @Xiubo Li