Re: [PATCH 1/4] xfstests: fix fsx fpunch test to actually test for fpunch

Eric Sandeen
2011-06-27T20:45:22Z

On 6/27/11 12:48 AM, Dave Chinner wrote:
> From: Dave Chinner <dchinner@redhat.com>
>
> The operation flags parameter to fallocate is the second parameter,
> not the last. Hence the fpunch test is actually testing for falloc
> support, not fpunch. Somebody needs a brown paper bag.
>
> Also, add a ftruncate call whenthe fpunch succeeds just in case the
> file was not already zero sized. Failing to ensure we start with a
> zero length file can cause read ops to fail size checks if they
> occur before the file is written to be the main test loop.
>
> While there, observe the quiet flag the same as the falloc test
> does and have them both emit the warning at the same error level.
>
> Signed-off-by: Dave Chinner <dchinner@redhat.com>

Reviewed-by: Eric Sandeen <sandeen@redhat.com>

> ---
> ltp/fsx.c | 14 +++++++-------
> 1 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/ltp/fsx.c b/ltp/fsx.c
> index 0683853..a37e223 100644
> --- a/ltp/fsx.c
> +++ b/ltp/fsx.c
> @@ -1243,7 +1243,7 @@ test_fallocate()
> if (!lite && fallocate_calls) {
> if (fallocate(fd, 0, 0, 1) && errno == EOPNOTSUPP) {
> if(!quiet)
> - prt("fsx: main: filesystem does not support fallocate, disabling\n");
> + warn("main: filesystem does not support fallocate, disabling\n");
> fallocate_calls = 0;
> } else {
> ftruncate(fd, 0);
> @@ -1260,13 +1260,13 @@ test_punch_hole()
> {
> #ifdef FALLOC_FL_PUNCH_HOLE
> if (!lite && punch_hole_calls) {
> - if (fallocate(fd, 0, 0,
> - FALLOC_FL_KEEP_SIZE | FALLOC_FL_PUNCH_HOLE) &&
> - errno == EOPNOTSUPP) {
> -
> - warn("main: filesystem does not support fallocate punch hole, disabling");
> + if (fallocate(fd, FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
> + 0, 1) && errno == EOPNOTSUPP) {
> + if(!quiet)
> + warn("main: filesystem does not support fallocate punch hole, disabling");
> punch_hole_calls = 0;
> - }
> + } else
> + ftruncate(fd, 0);
> }
> #else /* ! PUNCH HOLE */
> punch_hole_calls = 0;