2015-01-23 05:23:42

by Steve French

[permalink] [raw]
Subject: xfstest generic/299

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


2015-01-23 05:35:38

by Eric Sandeen

[permalink] [raw]
Subject: Re: xfstest generic/299

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

2015-01-23 20:09:49

by Steve French

[permalink] [raw]
Subject: Re: xfstest generic/299

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

2015-01-23 20:18:00

by Steve French

[permalink] [raw]
Subject: Re: xfstest generic/299

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

2015-01-23 20:28:17

by Eric Sandeen

[permalink] [raw]
Subject: Re: xfstest generic/299

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


2015-01-23 20:25:20

by Eric Sandeen

[permalink] [raw]
Subject: Re: xfstest generic/299

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