2011-04-04 09:35:09

by Pádraig Brady

[permalink] [raw]
Subject: Re: [PATCH 6/6] tests: avoid spurious parallel failure due to temporary disk full

On 04/04/11 10:08, Jim Meyering wrote:
> P?draig Brady wrote:
>> On 04/04/11 06:13, Jim Meyering wrote:
>>> From: Jim Meyering <[email protected]>
>>>
>>> Running the new fiemap-empty test uses 600MB of disk space via
>>> fallocate, and in so doing caused failure in unrelated tests that
>>> were running in parallel on a small file system. Rather than
>>> simply running fallocate (which allocates the space, inducing
>>> disk full when it fails), skip the test if there is less than
>>> 800MB of free space, as computed via stat and awk.
>
> Thanks for looking.
>
>> Oops sorry.
>> Maybe worth noting is that stat works at a lower level,
>
> Not sure what you mean? Both use statfs.

Oops right. df uses f_bavail, so perhaps it might
be better to use %a rather than %f with `stat`?

This fallocate() behavior is annoying anyway,
as I'm not sure when it's useful, except for
filling up a file system.
It seems like a this would be useful.

#define FALLOC_FL_FULL_SIZE 0x03 /* allocate all or nothing */

cheers,
P?draig.


2011-04-04 09:55:39

by Jim Meyering

[permalink] [raw]
Subject: Re: [PATCH 6/6] tests: avoid spurious parallel failure due to temporary disk full

P?draig Brady wrote:

> On 04/04/11 10:08, Jim Meyering wrote:
>> P?draig Brady wrote:
>>> On 04/04/11 06:13, Jim Meyering wrote:
>>>> From: Jim Meyering <[email protected]>
>>>>
>>>> Running the new fiemap-empty test uses 600MB of disk space via
>>>> fallocate, and in so doing caused failure in unrelated tests that
>>>> were running in parallel on a small file system. Rather than
>>>> simply running fallocate (which allocates the space, inducing
>>>> disk full when it fails), skip the test if there is less than
>>>> 800MB of free space, as computed via stat and awk.
>>
>> Thanks for looking.
>>
>>> Oops sorry.
>>> Maybe worth noting is that stat works at a lower level,
>>
>> Not sure what you mean? Both use statfs.
>
> Oops right. df uses f_bavail, so perhaps it might
> be better to use %a rather than %f with `stat`?

Oh, yes. Definitely.
I had thought I was using that one,
but had skimmed the descriptions too quickly (I spotted "superuser"
in the description of %a, so went with %f ;-).
Thanks!

I may adjust stat --help's description of %f to say this:

%a Free blocks available to non-superuser
%f Free blocks in file system (available to superuser)

> This fallocate() behavior is annoying anyway,
> as I'm not sure when it's useful, except for
> filling up a file system.
> It seems like a this would be useful.
>
> #define FALLOC_FL_FULL_SIZE 0x03 /* allocate all or nothing */

Good idea.
I read fallocate's manual looking for a command-line option
like that when I realized that its behavior was at the root
of my non-deterministic test failures.

Sounds like it'd make a good new option, if not the default.