[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <CB2787E8-CE9B-46BE-B649-4E38ABE27C2B@dilger.ca>
Date: Fri, 28 Feb 2014 12:08:47 -0700
From: Andreas Dilger <adilger@...ger.ca>
To: Lukas Czerner <lczerner@...hat.com>
Cc: linux-ext4@...r.kernel.org, xfs@....sgi.com,
linux-fsdevel@...r.kernel.org
Subject: Re: [PATCH 7/8] xfstests: Add fallocate zero range operation to fsx
On Feb 28, 2014, at 9:11 AM, Lukas Czerner <lczerner@...hat.com> wrote:
> This commit adds fallocate FALLOC_FL_ZERO_RANGE support for fsx.
It looks like this patch breaks the option handling for these
fallocate features.
> int fallocate_calls = 1; /* -F flag disables */
> int punch_hole_calls = 1; /* -H flag disables */
> +int zero_range_calls = 1; /* -z flag disables */
So these fallocate tests are on by default...
> .+int
> +test_fallocate(int mode)
> {
> #ifdef HAVE_LINUX_FALLOC_H
> + int ret = 0;
> if (!lite && fallocate_calls) {
> + if (fallocate(fd, mode, 0, 1) && errno == EOPNOTSUPP) {
> if(!quiet)
> warn("main: filesystem does not support fallocate, disabling\n");
> } else {
> + ret = 1;
> ftruncate(fd, 0);
> }
> }
> #endif
> }
And this returns 1 or 0 depending if they are supported or not...
> + while ((ch = getopt(argc, argv, "b:c:dfl:m:no:p:qr:s:t:w:xyAD:FHzLN:OP:RS:WZ"))
> != EOF)
> switch (ch) {
> case 'H':
> punch_hole_calls = 0;
> break;
> + case 'z':
> + zero_range_calls = 0;
> + break;
And the option parsing sets the values to zero if they are disabled,
so far, so good...
> + fallocate_calls = test_fallocate(0);
> + punch_hole_calls = test_fallocate(FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE);
> + zero_range_calls = test_fallocate(FALLOC_FL_ZERO_RANGE);
But here, the values set by option parsing are clobbered and the
tests are only enabled or disabled depending on whether the kernel
supports that feature or not. I think you need something like:
if (fallocate_calls)
fallocate_calls = test_fallocate(0);
if (punch_hole_calls)
punch_hole_calls = test_fallocate(FALLOC_FL_PUNCH_HOLE |
FALLOC_FL_KEEP_SIZE);
if (zero_range_calls)
zero_range_calls = test_fallocate(FALLOC_FL_ZERO_RANGE);
Cheers, Andreas
Download attachment "signature.asc" of type "application/pgp-signature" (834 bytes)
Powered by blists - more mailing lists