Noticed test generic/299 failing over NFS (v4.1 dialect) with the error
"[not run] /usr/bin/fio too old"
fio-2.1.11 version (which is what is installed on current Ubuntu) is
presumably not too old
and the earlier test bug noticed in testing ext4 where NUM_JOBS was
not defined in this testcase does not seem to be the issue (it fails
the same way even if I set NUM_JOBS=4 manually in tests/generic/299)
Should test 299 work over NFS?
--
Thanks,
Steve
On 1/22/15 11:23 PM, Steve French wrote:
> Noticed test generic/299 failing over NFS (v4.1 dialect) with the error
>
> "[not run] /usr/bin/fio too old"
>
> fio-2.1.11 version (which is what is installed on current Ubuntu) is
> presumably not too old
Well, 2.1.11 was released 16-Jul-2014
fio is up to 2.2.5 now, so it sure could be.
The test sets up a config file, and tries to run fio against it;
if it fails, it's deemed "too old"
And _require_fio dumps to $seqres.full,
$FIO_PROG --warnings-fatal --showcmd $job >> $seqres.full 2>&1
[ $? -eq 0 ] || _notrun "$FIO_PROG too old, see $seqres.full"
so what does 299.full look like?
-Eric
On Thu, Jan 22, 2015 at 11:35 PM, Eric Sandeen <[email protected]> wrote:
> On 1/22/15 11:23 PM, Steve French wrote:
>> Noticed test generic/299 failing over NFS (v4.1 dialect) with the error
>>
>> "[not run] /usr/bin/fio too old"
>>
>> fio-2.1.11 version (which is what is installed on current Ubuntu) is
>> presumably not too old
>
> Well, 2.1.11 was released 16-Jul-2014
>
> fio is up to 2.2.5 now, so it sure could be.
I updated to 2.2.5-3 (cloning and building from the repository on
git.kernel.org) which did not seem to change the results.
> The test sets up a config file, and tries to run fio against it;
> if it fails, it's deemed "too old"
>
> And _require_fio dumps to $seqres.full,
>
> $FIO_PROG --warnings-fatal --showcmd $job >> $seqres.full 2>&1
> [ $? -eq 0 ] || _notrun "$FIO_PROG too old, see $seqres.full"
>
> so what does 299.full look like?
min value out of range: 0 (1 min)
fio: failed parsing filesize=0
fio: job global dropped
fio --ioengine=libaio --bs=128k --directory=/mnt1/scratch --size=999G
--iodepth=128*1 --continue_on_error=write --ignore_error=,ENOSPC
--error_dump=0 --create_on_open=1 --fallocate=none --exitall=1
--
Thanks,
Steve
On Fri, Jan 23, 2015 at 2:09 PM, Steve French <[email protected]> wrote:
> On Thu, Jan 22, 2015 at 11:35 PM, Eric Sandeen <[email protected]> wrote:
>> On 1/22/15 11:23 PM, Steve French wrote:
>>> Noticed test generic/299 failing over NFS (v4.1 dialect) with the error
>>>
>>> "[not run] /usr/bin/fio too old"
>>>
>>> fio-2.1.11 version (which is what is installed on current Ubuntu) is
>>> presumably not too old
>>
>> Well, 2.1.11 was released 16-Jul-2014
>>
>> fio is up to 2.2.5 now, so it sure could be.
>
> I updated to 2.2.5-3 (cloning and building from the repository on
> git.kernel.org) which did not seem to change the results.
>
>> The test sets up a config file, and tries to run fio against it;
>> if it fails, it's deemed "too old"
>>
>> And _require_fio dumps to $seqres.full,
>>
>> $FIO_PROG --warnings-fatal --showcmd $job >> $seqres.full 2>&1
>> [ $? -eq 0 ] || _notrun "$FIO_PROG too old, see $seqres.full"
>>
>> so what does 299.full look like?
>
> min value out of range: 0 (1 min)
> fio: failed parsing filesize=0
> fio: job global dropped
> fio --ioengine=libaio --bs=128k --directory=/mnt1/scratch --size=999G
> --iodepth=128*1 --continue_on_error=write --ignore_error=,ENOSPC
> --error_dump=0 --create_on_open=1 --fallocate=none --exitall=1
>
Manually setting FILE_SIZE=262144 in tests/generic/299 got it
past that point (I wonder if BLOCK_SIZE is not set - where
does it get set?).
But since it then call xfs_io falloc it is not going to work over NFSv4.1
--
Thanks,
Steve
On 1/23/15 2:17 PM, Steve French wrote:
> On Fri, Jan 23, 2015 at 2:09 PM, Steve French <[email protected]> wrote:
>> On Thu, Jan 22, 2015 at 11:35 PM, Eric Sandeen <[email protected]> wrote:
>>> On 1/22/15 11:23 PM, Steve French wrote:
>>>> Noticed test generic/299 failing over NFS (v4.1 dialect) with the error
>>>>
>>>> "[not run] /usr/bin/fio too old"
>>>>
>>>> fio-2.1.11 version (which is what is installed on current Ubuntu) is
>>>> presumably not too old
>>>
>>> Well, 2.1.11 was released 16-Jul-2014
>>>
>>> fio is up to 2.2.5 now, so it sure could be.
>>
>> I updated to 2.2.5-3 (cloning and building from the repository on
>> git.kernel.org) which did not seem to change the results.
>>
>>> The test sets up a config file, and tries to run fio against it;
>>> if it fails, it's deemed "too old"
>>>
>>> And _require_fio dumps to $seqres.full,
>>>
>>> $FIO_PROG --warnings-fatal --showcmd $job >> $seqres.full 2>&1
>>> [ $? -eq 0 ] || _notrun "$FIO_PROG too old, see $seqres.full"
>>>
>>> so what does 299.full look like?
>>
>> min value out of range: 0 (1 min)
>> fio: failed parsing filesize=0
>> fio: job global dropped
>> fio --ioengine=libaio --bs=128k --directory=/mnt1/scratch --size=999G
>> --iodepth=128*1 --continue_on_error=write --ignore_error=,ENOSPC
>> --error_dump=0 --create_on_open=1 --fallocate=none --exitall=1
>>
>
> Manually setting FILE_SIZE=262144 in tests/generic/299 got it
> past that point (I wonder if BLOCK_SIZE is not set - where
> does it get set?).
>
> But since it then call xfs_io falloc it is not going to work over NFSv4.1
ok, then it should have a requirement on falloc...
which it does ...
_require_fio $fio_config
_require_xfs_io_command "falloc"
so it'll gracefully _notrun due to either of those, as it should, apparently.
I'd swap the two _requires, the falloc _notrun message will make more sense
than the _require_fio notrun message, and save future NFS users the
head-scratching you've suffered through. :)
-Eric
On 1/23/15 2:09 PM, Steve French wrote:
> On Thu, Jan 22, 2015 at 11:35 PM, Eric Sandeen <[email protected]> wrote:
>> On 1/22/15 11:23 PM, Steve French wrote:
>>> Noticed test generic/299 failing over NFS (v4.1 dialect) with the error
>>>
>>> "[not run] /usr/bin/fio too old"
>>>
>>> fio-2.1.11 version (which is what is installed on current Ubuntu) is
>>> presumably not too old
>>
>> Well, 2.1.11 was released 16-Jul-2014
>>
>> fio is up to 2.2.5 now, so it sure could be.
>
> I updated to 2.2.5-3 (cloning and building from the repository on
> git.kernel.org) which did not seem to change the results.
>
>> The test sets up a config file, and tries to run fio against it;
>> if it fails, it's deemed "too old"
>>
>> And _require_fio dumps to $seqres.full,
>>
>> $FIO_PROG --warnings-fatal --showcmd $job >> $seqres.full 2>&1
>> [ $? -eq 0 ] || _notrun "$FIO_PROG too old, see $seqres.full"
>>
>> so what does 299.full look like?
so it's telling you:
> min value out of range: 0 (1 min)
> fio: failed parsing filesize=0
^^^^^^^^^^
and if we read the test:
BLK_DEV_SIZE=`blockdev --getsz $SCRATCH_DEV`
FILE_SIZE=$((BLK_DEV_SIZE * 512))
cat >$fio_config <<EOF
###########
# $seq test fio activity
# Filenames derived from jobsname and jobid like follows:
# ${JOB_NAME}.${JOB_ID}.${ITERATION_ID}
[global]
ioengine=libaio
bs=128k
directory=${SCRATCH_MNT}
filesize=${FILE_SIZE}
^^^^^^^^^^^^^^^^^^^^^
...
since you have no block device for NFS, blockdev will fail,
and you won't get a block dev size, so you won't get a file size,
and the fio test won't work.
The script not catching this looks like a bug.
fio saying "too old" looks inaccurate.
You could fix it to DTRT on NFS somehow, or catch the fact that
the blockdev command fails (probably because $SCRATCH_DEV isn't
set?) and _notrun the test.
I imagine it could be fixed, though; df total space available on
$SCRATCH_MNT might do as well as blockdev --getsz, though I'm not
100% sure.
-Eric