Re: [PATCH v3 xfstests 1/2] generic/002: simplify the hardlink count test

Zorro Lang <[email protected]> Tue, 28 Jul 2026 18:13:40 +0800
Newsgroups org.kernel.vger.fstests,org.kernel.vger.linux-cifs
Message-ID <amh85c25M9jOE_BW@zlang-mailbox>
On Fri, Jul 24, 2026 at 03:12:09AM +0000, ChenXiaoSong wrote:
> From: ChenXiaoSong <[email protected]>
> 
> Add the test to the hardlink group and replace the enumerated link
> counts with arithmetic loops.
> 
> Clean up the test header, use "Silence is golden" success message,
> and return the test status explicitly.
> 
> Suggested-by: Zorro Lang <[email protected]>
> Signed-off-by: ChenXiaoSong <[email protected]>
> ---

generic/002 is quite an old test case, and some of its code differs
from the current standard conventions in fstests. If you just want
to add it to the "hardlink" group, updating the group is sufficient.

However, if you'd like to take this opportunity to refactor some of
the code, besides your changes, you can refer to the review points
on [PATCH 2/2] as well as using _require_test_program "lstat64"

Thanks,
Zorro

>  tests/generic/002     | 16 ++++++----------
>  tests/generic/002.out |  2 +-
>  2 files changed, 7 insertions(+), 11 deletions(-)
> 
> diff --git a/tests/generic/002 b/tests/generic/002
> index 6df57a7a..9b210705 100755
> --- a/tests/generic/002
> +++ b/tests/generic/002
> @@ -2,12 +2,12 @@
>  # SPDX-License-Identifier: GPL-2.0
>  # Copyright (c) 2000-2001 Silicon Graphics, Inc.  All Rights Reserved.
>  #
> -# FS QA Test No. 002
> +# FS QA Test 002
>  #
>  # simple inode link count test for a regular file
>  #
>  . ./common/preamble
> -_begin_fstest metadata udf auto quick
> +_begin_fstest metadata udf auto quick hardlink
>  
>  # Import common functions.
>  . ./common/filter
> @@ -17,14 +17,11 @@ status=0	# success is the default!
>  _require_test
>  _require_hardlinks
>  
> -echo "Silence is goodness ..."
> -
>  # ensure target directory exists
>  mkdir `dirname $TEST_DIR/tmp` 2>/dev/null
>  
>  touch $TEST_DIR/tmp.1
> -for l in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
> -do
> +for ((l = 2; l <= 20; l++)); do
>      ln $TEST_DIR/tmp.1 $TEST_DIR/tmp.$l
>      x=`$here/src/lstat64 $TEST_DIR/tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'`
>      if [ "$l" -ne $x ]
> @@ -35,8 +32,7 @@ do
>      fi
>  done
>  
> -for l in 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
> -do
> +for ((l = 20; l >= 1; l--)); do
>      x=`$here/src/lstat64 $TEST_DIR/tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'`
>      if [ "$l" -ne $x ]
>      then
> @@ -47,5 +43,5 @@ do
>      rm -f $TEST_DIR/tmp.$l
>  done
>  
> -# success, all done
> -exit
> +echo "Silence is golden"
> +exit $status
> diff --git a/tests/generic/002.out b/tests/generic/002.out
> index 11426b54..61705c7c 100644
> --- a/tests/generic/002.out
> +++ b/tests/generic/002.out
> @@ -1,2 +1,2 @@
>  QA output created by 002
> -Silence is goodness ...
> +Silence is golden
> -- 
> 2.43.0
>