2022-03-14 11:26:18

by Ojaswin Mujoo

[permalink] [raw]
Subject: [PATCH] ext4/053: Add support for testing mb_optimize_scan

Add support to test the mb_optimize_scan mount option.
Since its value is not reflected in the "options" file in proc,
use "mb_structs_summary" to verify its value.

Signed-off-by: Ojaswin Mujoo <[email protected]>
---
tests/ext4/053 | 21 ++++++++++++---------
1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/tests/ext4/053 b/tests/ext4/053
index e1e79592..bd92002f 100755
--- a/tests/ext4/053
+++ b/tests/ext4/053
@@ -100,6 +100,7 @@ test_mnt() {
(
ret=0
IFS=','
+ proc_path="/proc/fs/ext4/$(_short_dev $SCRATCH_DEV)"
for option in $OPTS; do
if echo $IGNORED | grep -w $option; then
continue
@@ -114,11 +115,16 @@ test_mnt() {
fi
option=${option#^}

- if echo $CHECK_MINFO | grep -w $option; then
+ if [[ $option =~ ^mb_optimize_scan=.*$ ]]; then
+ # mb_optimize_scan needs special handling
+ expected=${option#*=}
+ ret=$(cat $proc_path/mb_structs_summary | grep "optimize_scan" \
+ | awk '{ print $2 }')
+ elif echo $CHECK_MINFO | grep -w $option; then
findmnt -n -o OPTIONS $SCRATCH_DEV | grep $option
ret=$?
else
- grep $option /proc/fs/ext4/$(_short_dev $SCRATCH_DEV)/options
+ grep $option $proc_path/options
ret=$?
fi

@@ -526,13 +532,10 @@ for fstype in ext2 ext3 ext4; do

mnt prefetch_block_bitmaps removed
mnt no_prefetch_block_bitmaps
- # We don't currently have a way to know that the option has been
- # applied, so comment it out for now. This should be fixed in the
- # future.
- #mnt mb_optimize_scan=0
- #mnt mb_optimize_scan=1
- #not_mnt mb_optimize_scan=9
- #not_mnt mb_optimize_scan=
+ mnt mb_optimize_scan=0
+ mnt mb_optimize_scan=1
+ not_mnt mb_optimize_scan=9
+ not_mnt mb_optimize_scan=
mnt nombcache
mnt no_mbcache nombcache
mnt check=none removed
--
2.27.0


2022-04-10 21:39:31

by Eryu Guan

[permalink] [raw]
Subject: Re: [PATCH] ext4/053: Add support for testing mb_optimize_scan

On Mon, Mar 14, 2022 at 04:02:07PM +0530, Ojaswin Mujoo wrote:
> Add support to test the mb_optimize_scan mount option.
> Since its value is not reflected in the "options" file in proc,
> use "mb_structs_summary" to verify its value.
>
> Signed-off-by: Ojaswin Mujoo <[email protected]>

mb_optimize_scan option was added in v5.13 by commit 196e402adf2e ("ext4:
improve cr 0 / cr 1 group scanning"), and ext4/053 will run on v5.12
kernel (and newer kernels), so test will fail when testing v5.12 kernel.

> ---
> tests/ext4/053 | 21 ++++++++++++---------
> 1 file changed, 12 insertions(+), 9 deletions(-)
>
> diff --git a/tests/ext4/053 b/tests/ext4/053
> index e1e79592..bd92002f 100755
> --- a/tests/ext4/053
> +++ b/tests/ext4/053
> @@ -100,6 +100,7 @@ test_mnt() {
> (
> ret=0
> IFS=','
> + proc_path="/proc/fs/ext4/$(_short_dev $SCRATCH_DEV)"
> for option in $OPTS; do
> if echo $IGNORED | grep -w $option; then
> continue
> @@ -114,11 +115,16 @@ test_mnt() {
> fi
> option=${option#^}
>
> - if echo $CHECK_MINFO | grep -w $option; then
> + if [[ $option =~ ^mb_optimize_scan=.*$ ]]; then
> + # mb_optimize_scan needs special handling
> + expected=${option#*=}
> + ret=$(cat $proc_path/mb_structs_summary | grep "optimize_scan" \
> + | awk '{ print $2 }')
> + elif echo $CHECK_MINFO | grep -w $option; then
> findmnt -n -o OPTIONS $SCRATCH_DEV | grep $option
> ret=$?
> else
> - grep $option /proc/fs/ext4/$(_short_dev $SCRATCH_DEV)/options
> + grep $option $proc_path/options
> ret=$?
> fi
>
> @@ -526,13 +532,10 @@ for fstype in ext2 ext3 ext4; do
>
> mnt prefetch_block_bitmaps removed
> mnt no_prefetch_block_bitmaps
> - # We don't currently have a way to know that the option has been
> - # applied, so comment it out for now. This should be fixed in the
> - # future.

As the comment said, we need a way to know if mb_optimize_scan option is
supported by current kernel.

Thanks,
Eryu

> - #mnt mb_optimize_scan=0
> - #mnt mb_optimize_scan=1
> - #not_mnt mb_optimize_scan=9
> - #not_mnt mb_optimize_scan=
> + mnt mb_optimize_scan=0
> + mnt mb_optimize_scan=1
> + not_mnt mb_optimize_scan=9
> + not_mnt mb_optimize_scan=
> mnt nombcache
> mnt no_mbcache nombcache
> mnt check=none removed
> --
> 2.27.0