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 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*.

> > > 
> > > 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
> > > > 
> > > 
> 




[Index of Archives]     [CEPH Users]     [Ceph Large]     [Ceph Dev]     [Information on CEPH]     [Linux BTRFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux