Re: [PATCH] generic/020: fix really long attr test failure for ceph

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]




On 18/02/2023 01:09, 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))
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,

The above change is already in the "ceph)" section:

143         nfs)
144                 # NFS doesn't provide a way to find out the max_attrval_size for 145                 # the underlying filesystem, so just use the lowest value above.
146                 max_attrval_size=1024
147                 ;;
148         ceph)
149                 # CephFS does not have a maximum value for attributes.  Instead,
150                 # it imposes a maximum size for the full set of xattrs
151                 # names+values, which by default is 64K. Compute the maximum
152                 # taking into account the already existing attributes
153                 size=$(getfattr --dump -e hex $filename 2>/dev/null | \
154                         awk -F "=0x" '/^user/ {len += length($1) + length($2) / 2} END {print len}') 155                 selinux_size=$(getfattr -n 'security.selinux' --dump -e hex $filename 2>/dev/null | \ 156                         awk -F "=0x" '/^security/ {len += length($1) + length($2) / 2} END {print len}') 157                 max_attrval_size=$((65536 - $size - $selinux_size - $max_attrval_namelen))
158                 ;;
159         *)
160                 # Assume max ~1 block of attrs
161                 BLOCK_SIZE=`_get_block_size $TEST_DIR`
162                 # leave a little overhead
163                 let max_attrval_size=$BLOCK_SIZE-256

I didn't find the ext* section in _attr_get_maxval_size(). Did I miss something here ?

I have double checked it again by pulling the latest source code, no any change about this since my last pull yesterday.

Thanks

- Xiubo


--D

  		;;
  	*)
  		# Assume max ~1 block of attrs
--
2.31.1

--
Best Regards,

Xiubo Li (李秀波)

Email: xiubli@xxxxxxxxxx/xiubli@xxxxxxx
Slack: @Xiubo Li




[Index of Archives]     [Linux Filesystems Development]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux