FS/XFS testing framework
 help / color / mirror / Atom feed
From: Qu Wenruo <quwenruo.btrfs@gmx.com>
To: Filipe Manana <fdmanana@kernel.org>
Cc: fstests@vger.kernel.org, linux-btrfs@vger.kernel.org,
	Filipe Manana <fdmanana@suse.com>
Subject: Re: [PATCH] btrfs/319: make the test work when compression is used
Date: Sat, 7 Sep 2024 07:22:36 +0930	[thread overview]
Message-ID: <bce9fb4c-739a-4f03-ae2c-2d0b235dcd8a@gmx.com> (raw)
In-Reply-To: <CAL3q7H5dJSayuWMYjHRPp_p734D98ykFShe1nwyboGm2i9AQ-Q@mail.gmail.com>



在 2024/9/6 20:27, Filipe Manana 写道:
> On Fri, Sep 6, 2024 at 11:39 AM Qu Wenruo <quwenruo.btrfs@gmx.com> wrote:
>>
>>
>>
>> 在 2024/9/6 01:08, fdmanana@kernel.org 写道:
>>> From: Filipe Manana <fdmanana@suse.com>
>>>
>>> Currently btrfs/319 assumes there is no compression and that the files
>>> get a single extent (1 fiemap line) with a size of 1048581 bytes. However
>>> when testing with compression, for example by passing "-o compress" to
>>> MOUNT_OPTIONS environment variable, we get several extents and two lines
>>> of fiemap output, which makes the test fail since it hardcodes the fiemap
>>> output:
>>>
>>>     $ MOUNT_OPTIONS="-o compress" ./check btrfs/319
>>>     FSTYP         -- btrfs
>>>     PLATFORM      -- Linux/x86_64 debian0 6.11.0-rc6-btrfs-next-173+ #1 SMP PREEMPT_DYNAMIC Tue Sep  3 17:40:24 WEST 2024
>>>     MKFS_OPTIONS  -- /dev/sdc
>>>     MOUNT_OPTIONS -- -o compress /dev/sdc /home/fdmanana/btrfs-tests/scratch_1
>>>
>>>     btrfs/319 1s ... - output mismatch (see /home/fdmanana/git/hub/xfstests/results//btrfs/319.out.bad)
>>>         --- tests/btrfs/319.out        2024-08-12 14:16:55.653383284 +0100
>>>         +++ /home/fdmanana/git/hub/xfstests/results//btrfs/319.out.bad 2024-09-05 15:24:53.323076548 +0100
>>>         @@ -6,11 +6,13 @@
>>>          e61178ee0288ebe3fa36a3c975b02c94  SCRATCH_MNT/snap/foo
>>>          e61178ee0288ebe3fa36a3c975b02c94  SCRATCH_MNT/snap/bar
>>>          File bar fiemap in the original filesystem:
>>>         -0: [0..2055]: shared|last
>>>         +0: [0..2047]: shared
>>>         +1: [2048..2055]: shared|last
>>>          Creating a new filesystem to receive the send stream...
>>>         ...
>>>         (Run 'diff -u /home/fdmanana/git/hub/xfstests/tests/btrfs/319.out /home/fdmanana/git/hub/xfstests/results//btrfs/319.out.bad'  to see the entire diff)
>>>
>>>     HINT: You _MAY_ be missing kernel fix:
>>>           46a6e10a1ab1 btrfs: send: allow cloning non-aligned extent if it ends at i_size
>>>
>>>     Ran: btrfs/319
>>>     Failures: btrfs/319
>>>     Failed 1 of 1 tests
>>>
>>> So change the test to not rely on the fiemap output in its golden output
>>> and instead just check if all the extents reported by fiemap have the
>>> shared flag set (failing if there are any without the shared flag).
>>
>> Looks good to me.
>>
>> Reviewed-by: Qu Wenruo <wqu@suse.com>
>>
>> Just one minor improvement to make debug a little easier.
>>
>>>
>>> Signed-off-by: Filipe Manana <fdmanana@suse.com>
>>> ---
>>>    tests/btrfs/319     | 19 +++++++++++++++----
>>>    tests/btrfs/319.out |  4 ----
>>>    2 files changed, 15 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/tests/btrfs/319 b/tests/btrfs/319
>>> index 975c1497..7cfd3d00 100755
>>> --- a/tests/btrfs/319
>>> +++ b/tests/btrfs/319
>>> @@ -32,6 +32,19 @@ _require_odirect
>>>    _fixed_by_kernel_commit 46a6e10a1ab1 \
>>>        "btrfs: send: allow cloning non-aligned extent if it ends at i_size"
>>>
>>> +check_all_extents_shared()
>>> +{
>>> +     local file=$1
>>> +     local fiemap_output
>>> +
>>> +     fiemap_output=$($XFS_IO_PROG -r -c "fiemap -v" $file | _filter_fiemap_flags)
>>
>> Maybe also save the full unfiltered output to seqres.full?
>
> Hum, why?
>
> Do you think looking at the flags in hexadecimal values instead of
> symbolic names like "shared", "encoded", "last", etc, is easier to
> read?

My bad, I thought that filter only shows the flags, but it turns out
that keeps the filepos and length.

So the filtered one is much better in all aspects.

Thanks,
Qu

>
> Thanks.
>
>>
>> Thanks,
>> Qu
>>
>>> +     echo "$fiemap_output" | grep -qv 'shared'
>>> +     if [ $? -eq 0 ]; then
>>> +             echo -e "Found non-shared extents for file $file:\n"
>>> +             echo "$fiemap_output"
>>> +     fi
>>> +}
>>> +
>>>    send_files_dir=$TEST_DIR/btrfs-test-$seq
>>>    send_stream=$send_files_dir/snap.stream
>>>
>>> @@ -58,8 +71,7 @@ echo "File digests in the original filesystem:"
>>>    md5sum $SCRATCH_MNT/snap/foo | _filter_scratch
>>>    md5sum $SCRATCH_MNT/snap/bar | _filter_scratch
>>>
>>> -echo "File bar fiemap in the original filesystem:"
>>> -$XFS_IO_PROG -r -c "fiemap -v" $SCRATCH_MNT/snap/bar | _filter_fiemap_flags
>>> +check_all_extents_shared "$SCRATCH_MNT/snap/bar"
>>>
>>>    echo "Creating a new filesystem to receive the send stream..."
>>>    _scratch_unmount
>>> @@ -72,8 +84,7 @@ echo "File digests in the new filesystem:"
>>>    md5sum $SCRATCH_MNT/snap/foo | _filter_scratch
>>>    md5sum $SCRATCH_MNT/snap/bar | _filter_scratch
>>>
>>> -echo "File bar fiemap in the new filesystem:"
>>> -$XFS_IO_PROG -r -c "fiemap -v" $SCRATCH_MNT/snap/bar | _filter_fiemap_flags
>>> +check_all_extents_shared "$SCRATCH_MNT/snap/bar"
>>>
>>>    # success, all done
>>>    status=0
>>> diff --git a/tests/btrfs/319.out b/tests/btrfs/319.out
>>> index 14079dbe..18a50ff8 100644
>>> --- a/tests/btrfs/319.out
>>> +++ b/tests/btrfs/319.out
>>> @@ -5,12 +5,8 @@ Creating snapshot and a send stream for it...
>>>    File digests in the original filesystem:
>>>    e61178ee0288ebe3fa36a3c975b02c94  SCRATCH_MNT/snap/foo
>>>    e61178ee0288ebe3fa36a3c975b02c94  SCRATCH_MNT/snap/bar
>>> -File bar fiemap in the original filesystem:
>>> -0: [0..2055]: shared|last
>>>    Creating a new filesystem to receive the send stream...
>>>    At subvol snap
>>>    File digests in the new filesystem:
>>>    e61178ee0288ebe3fa36a3c975b02c94  SCRATCH_MNT/snap/foo
>>>    e61178ee0288ebe3fa36a3c975b02c94  SCRATCH_MNT/snap/bar
>>> -File bar fiemap in the new filesystem:
>>> -0: [0..2055]: shared|last
>

  reply	other threads:[~2024-09-06 21:52 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-05 15:38 [PATCH] btrfs/319: make the test work when compression is used fdmanana
2024-09-06 10:38 ` Qu Wenruo
2024-09-06 10:57   ` Filipe Manana
2024-09-06 21:52     ` Qu Wenruo [this message]
2024-09-07  2:13 ` Anand Jain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bce9fb4c-739a-4f03-ae2c-2d0b235dcd8a@gmx.com \
    --to=quwenruo.btrfs@gmx.com \
    --cc=fdmanana@kernel.org \
    --cc=fdmanana@suse.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox