common/xfs: Initialise OPTIND for getopts calls
authorDave Chinner <dchinner@redhat.com>
Fri, 23 Feb 2018 03:54:54 +0000 (14:54 +1100)
committerEryu Guan <eguan@redhat.com>
Fri, 23 Feb 2018 05:11:53 +0000 (13:11 +0800)
commit7aaf557970c03a965436a3fa6fdd56267edf5ade
tree3be240dc6f24e69e1c25d079a5a4650954c42d27
parent6702176b93404db6efc1ed6ea8ac4075df2f949f
common/xfs: Initialise OPTIND for getopts calls

According to the bash man page:

OPTIND is initialized to 1 each time the shell or a shell
script is invoked.

This doesn't appear to be true - in tests scripts with no other
getopts calls, I'm seeing the getopts loop in _xfs_check to fail to
parse input parameters correctly. Tracing shows the parameters are
being passed to _xfs_check correctly, but on occassion getopts
simply doesn't see them.

Hence when running tests with both external log and real time
devices, tests are failing at random because xfs_check is
mis-parsing the parameters passed to it and not configuring the
external log correctly:

_check_xfs_filesystem: filesystem on /dev/sdg is inconsistent (c)
*** xfs_check output ***
aborting - no external log specified for FS with an external log
*** end xfs_check output

Fix this by ensuring OPTIND is correctly initialised before using
getopts. Do it for all places that call getopts that don't already
set OPTIND=1 before starting their parsing loop.

Signed-Off-By: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Eryu Guan <eguan@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
common/xfs
tests/generic/074
tests/generic/075
tests/generic/112