On Sun, May 29, 2022 at 06:55:01PM +0800, Zorro Lang wrote: > Due to generic/139 tests base on 512 bytes aligned, so skip this test > if the minimum dio write size >512. This patch also change the > common/rc::_require_dio helper, supports a minimum aligned size > argument. > > Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx> > --- > common/rc | 11 ++++++++--- > tests/generic/139 | 2 +- > 2 files changed, 9 insertions(+), 4 deletions(-) > > diff --git a/common/rc b/common/rc > index 2f31ca46..6f7a37fd 100644 > --- a/common/rc > +++ b/common/rc > @@ -2721,7 +2721,8 @@ _require_xfs_io_command() > fi > } > > -# check that kernel and filesystem support direct I/O > +# check that kernel and filesystem support direct I/O, and check if "$1" size > +# aligned (optional) is supported > _require_odirect() > { > if [ $FSTYP = "ext4" ] || [ $FSTYP = "f2fs" ] ; then > @@ -2735,9 +2736,13 @@ _require_odirect() > fi > fi > local testfile=$TEST_DIR/$$.direct > - $XFS_IO_PROG -F -f -d -c "pwrite 0 20k" $testfile > /dev/null 2>&1 > + local opt > + if [ -n "$1" ];then > + opt="-b $1" > + fi > + $XFS_IO_PROG -F -f -d -c "pwrite $opt 0 20k" $testfile > /dev/null 2>&1 Local variables that are defined by incoming parameters need to be declared at the top of the function, not inline. Also, there's a simple way to set this up at initialisation, too: local alignment=${1:+"-b $1"} If $1 is not set, alignment will be null, otherwise it will be set to "-b $1". > if [ $? -ne 0 ]; then > - _notrun "O_DIRECT is not supported" > + _notrun "O_DIRECT $1 is not supported" > fi if [ -n "$alignment" ]; then _notrun "O_DIRECT aligned to $1 bytes is not supported" else _notrun "O_DIRECT is not supported" fi Cheers, Dave. -- Dave Chinner david@xxxxxxxxxxxxx