Message ID | 20240114135713.10555-1-richard@nod.at (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | generic/020: Compute correct max_attrs for UBIFS | expand |
On Sun, Jan 14, 2024 at 02:57:13PM +0100, Richard Weinberger wrote: > When testing on a MTD with a rather small erase block > size, the default max_attr limit can be too much and the > test will fail. > Instead compute the actual limit. > > Signed-off-by: Richard Weinberger <richard@nod.at> > --- Thanks for the updating for UBIFS testing, this patch looks good to me. I'm not a good user of ubifs, but as your the maintainer of UBIFS, I think I can give more trust to this patch ;) So I'll merge this patch after a basic testing. Reviewed-by: Zorro Lang <zlang@redhat.com> > common/config | 1 + > common/ubifs | 9 +++++++++ > tests/generic/020 | 6 ++++++ > 3 files changed, 16 insertions(+) > create mode 100644 common/ubifs > > diff --git a/common/config b/common/config > index c9771ff9..05f2bb35 100644 > --- a/common/config > +++ b/common/config > @@ -545,6 +545,7 @@ _source_specific_fs() > ;; > ubifs) > [ "$UBIUPDATEVOL_PROG" = "" ] && _fatal "ubiupdatevol not found" > + . ./common/ubifs > ;; > esac > } > diff --git a/common/ubifs b/common/ubifs > new file mode 100644 > index 00000000..08323260 > --- /dev/null > +++ b/common/ubifs > @@ -0,0 +1,9 @@ > +#!/bin/bash > +# SPDX-License-Identifier: GPL-2.0-only > + > +_get_leb_size() > +{ > + local ubivol=$1 > + > + cat /sys/class/ubi/`basename $ubivol`/usable_eb_size > +} > diff --git a/tests/generic/020 b/tests/generic/020 > index da258aa5..4951b9e3 100755 > --- a/tests/generic/020 > +++ b/tests/generic/020 > @@ -101,6 +101,12 @@ _attr_get_max() > let max_attrs=$((($BLOCK_SIZE - 32) / (16 + 12 + 16 ))) > fi > ;; > + ubifs) > + LEB_SIZE=`_get_leb_size $TEST_DEV` > + # On UBIFS, the number of xattrs has to be less than 50% LEB size > + # divided by 160 (inode size) > + let max_attrs=$((($LEB_SIZE / 2 / 160) - 1)) > + ;; > *) > # Assume max ~1 block of attrs > BLOCK_SIZE=`_get_block_size $TEST_DIR` > -- > 2.35.3 > >
diff --git a/common/config b/common/config index c9771ff9..05f2bb35 100644 --- a/common/config +++ b/common/config @@ -545,6 +545,7 @@ _source_specific_fs() ;; ubifs) [ "$UBIUPDATEVOL_PROG" = "" ] && _fatal "ubiupdatevol not found" + . ./common/ubifs ;; esac } diff --git a/common/ubifs b/common/ubifs new file mode 100644 index 00000000..08323260 --- /dev/null +++ b/common/ubifs @@ -0,0 +1,9 @@ +#!/bin/bash +# SPDX-License-Identifier: GPL-2.0-only + +_get_leb_size() +{ + local ubivol=$1 + + cat /sys/class/ubi/`basename $ubivol`/usable_eb_size +} diff --git a/tests/generic/020 b/tests/generic/020 index da258aa5..4951b9e3 100755 --- a/tests/generic/020 +++ b/tests/generic/020 @@ -101,6 +101,12 @@ _attr_get_max() let max_attrs=$((($BLOCK_SIZE - 32) / (16 + 12 + 16 ))) fi ;; + ubifs) + LEB_SIZE=`_get_leb_size $TEST_DEV` + # On UBIFS, the number of xattrs has to be less than 50% LEB size + # divided by 160 (inode size) + let max_attrs=$((($LEB_SIZE / 2 / 160) - 1)) + ;; *) # Assume max ~1 block of attrs BLOCK_SIZE=`_get_block_size $TEST_DIR`
When testing on a MTD with a rather small erase block size, the default max_attr limit can be too much and the test will fail. Instead compute the actual limit. Signed-off-by: Richard Weinberger <richard@nod.at> --- common/config | 1 + common/ubifs | 9 +++++++++ tests/generic/020 | 6 ++++++ 3 files changed, 16 insertions(+) create mode 100644 common/ubifs