mbox series

[v12,0/5] tests for btrfs fsverity

Message ID cover.1658188603.git.boris@bur.io (mailing list archive)
Headers show
Series tests for btrfs fsverity | expand

Message

Boris Burkov July 18, 2022, 11:58 p.m. UTC
This patchset provides tests for fsverity support in btrfs.

It includes modifications for generic tests to pass with btrfs as well
as new tests.

--
v12:
- Actually incorporate Sweet Tea's significant improvement to the commit
  message for the log-writes test.
v11:
- remove unneeded common/btrfs sourcing from common/verity
- fix btrfs/290 prealloc test in case the disk extent actually
  had zeros.
- make logic a little more consistent in btrfs/291
- make btrfs/291 work regardless of how btrfs-progs prints the Merkle
  items.
v10:
- rebase
- add nodatasum instead of setting it
- rewrite eof block test to read zap_len at eof and to compare with a
  zero file instead of using xxd
- add _require_loop to the log_writes test

v9:
- use nodatasum for btrfs corruption tests.
- modify eof block corruption test to allow all zeroes rather than
  requiring an error.
v8:
- reorganize to have a patch for enabling generic tests followed by the
  patches with new and specific tests.
- fix some rebasing miscues from v7.
- fix a chunk of space characters instead of a tab in the new requires
  function.
v7:
- add a new patch to make the new corruption requires more clear
- require corruption in generic/576
- require only btrfs_corrupt_block in btrfs/290
- add missing xfs_io requirements in btrfs/290
- remove unneeded zero byte check from btrfs corruption function
- fix sloppy extras in generic/690
v6:
- refactor "requires" for verity corruption tests so that other verity
  tests can run on btrfs even without the corruption command available.
  Also, explictly require xfs_io fiemap for all corruption tests.
- simplify and clarify "non-trivial EFBIG" calculation and documentation
  per suggestions by Eric Biggers.
- remove unnecessary adjustment to max file size in the new EFBIG test;
  the bug it worked around has been fixed.
v5:
- more idiomatic requires structure for making efbig test generic
- make efbig test use truncate instead of pwrite for making a big file
- improve documentation for efbig test approximation
- fix underscores vs dashes in btrfs_requires_corrupt_block
- improvements in missing/redundant requires invocations
- move orphan test image file to $TEST_DIR
- make orphan test replay/snapshot device size depend on log device
  instead of hard-coding it.
- rebase (signicant: no more "groups" file; use preamble)
v4:
- mark local variables
- get rid of redundant mounts and syncs
- use '_' in function names correctly
- add a test for the EFBIG case
- reduce usage of requires_btrfs_corrupt_block
- handle variable input when corrupting merkle tree
v3: rebase onto xfstests master branch
v2: pass generic tests, add logwrites test


Boris Burkov (5):
  common/verity: require corruption functionality
  common/verity: support btrfs in generic fsverity tests
  btrfs: test btrfs specific fsverity corruption
  btrfs: test verity orphans with dmlogwrites
  generic: test fs-verity EFBIG scenarios

 common/btrfs          |   5 ++
 common/config         |   1 +
 common/verity         |  48 ++++++++++++
 tests/btrfs/290       | 172 ++++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/290.out   |  25 ++++++
 tests/btrfs/291       | 167 ++++++++++++++++++++++++++++++++++++++++
 tests/btrfs/291.out   |   2 +
 tests/generic/574     |  38 +++++++++-
 tests/generic/574.out |  13 +---
 tests/generic/576     |   1 +
 tests/generic/692     |  64 ++++++++++++++++
 tests/generic/692.out |   7 ++
 12 files changed, 531 insertions(+), 12 deletions(-)
 create mode 100755 tests/btrfs/290
 create mode 100644 tests/btrfs/290.out
 create mode 100755 tests/btrfs/291
 create mode 100644 tests/btrfs/291.out
 create mode 100644 tests/generic/692
 create mode 100644 tests/generic/692.out

Comments

Sweet Tea Dorminy July 19, 2022, 8:32 p.m. UTC | #1
On 7/18/22 19:58, Boris Burkov wrote:
> This patchset provides tests for fsverity support in btrfs.
> 
> It includes modifications for generic tests to pass with btrfs as well
> as new tests.
> 
> --
> v12:
> - Actually incorporate Sweet Tea's significant improvement to the commit
>    message for the log-writes test.
> v11:
> - remove unneeded common/btrfs sourcing from common/verity
> - fix btrfs/290 prealloc test in case the disk extent actually
>    had zeros.
> - make logic a little more consistent in btrfs/291
> - make btrfs/291 work regardless of how btrfs-progs prints the Merkle
>    items.
> v10:
> - rebase
> - add nodatasum instead of setting it
> - rewrite eof block test to read zap_len at eof and to compare with a
>    zero file instead of using xxd
> - add _require_loop to the log_writes test
> 
> v9:
> - use nodatasum for btrfs corruption tests.
> - modify eof block corruption test to allow all zeroes rather than
>    requiring an error.
> v8:
> - reorganize to have a patch for enabling generic tests followed by the
>    patches with new and specific tests.
> - fix some rebasing miscues from v7.
> - fix a chunk of space characters instead of a tab in the new requires
>    function.
> v7:
> - add a new patch to make the new corruption requires more clear
> - require corruption in generic/576
> - require only btrfs_corrupt_block in btrfs/290
> - add missing xfs_io requirements in btrfs/290
> - remove unneeded zero byte check from btrfs corruption function
> - fix sloppy extras in generic/690
> v6:
> - refactor "requires" for verity corruption tests so that other verity
>    tests can run on btrfs even without the corruption command available.
>    Also, explictly require xfs_io fiemap for all corruption tests.
> - simplify and clarify "non-trivial EFBIG" calculation and documentation
>    per suggestions by Eric Biggers.
> - remove unnecessary adjustment to max file size in the new EFBIG test;
>    the bug it worked around has been fixed.
> v5:
> - more idiomatic requires structure for making efbig test generic
> - make efbig test use truncate instead of pwrite for making a big file
> - improve documentation for efbig test approximation
> - fix underscores vs dashes in btrfs_requires_corrupt_block
> - improvements in missing/redundant requires invocations
> - move orphan test image file to $TEST_DIR
> - make orphan test replay/snapshot device size depend on log device
>    instead of hard-coding it.
> - rebase (signicant: no more "groups" file; use preamble)
> v4:
> - mark local variables
> - get rid of redundant mounts and syncs
> - use '_' in function names correctly
> - add a test for the EFBIG case
> - reduce usage of requires_btrfs_corrupt_block
> - handle variable input when corrupting merkle tree
> v3: rebase onto xfstests master branch
> v2: pass generic tests, add logwrites test
> 
> 
> Boris Burkov (5):
>    common/verity: require corruption functionality
>    common/verity: support btrfs in generic fsverity tests
>    btrfs: test btrfs specific fsverity corruption
>    btrfs: test verity orphans with dmlogwrites
>    generic: test fs-verity EFBIG scenarios
> 
>   common/btrfs          |   5 ++
>   common/config         |   1 +
>   common/verity         |  48 ++++++++++++
>   tests/btrfs/290       | 172 ++++++++++++++++++++++++++++++++++++++++++
>   tests/btrfs/290.out   |  25 ++++++
>   tests/btrfs/291       | 167 ++++++++++++++++++++++++++++++++++++++++
>   tests/btrfs/291.out   |   2 +
>   tests/generic/574     |  38 +++++++++-
>   tests/generic/574.out |  13 +---
>   tests/generic/576     |   1 +
>   tests/generic/692     |  64 ++++++++++++++++
>   tests/generic/692.out |   7 ++
>   12 files changed, 531 insertions(+), 12 deletions(-)
>   create mode 100755 tests/btrfs/290
>   create mode 100644 tests/btrfs/290.out
>   create mode 100755 tests/btrfs/291
>   create mode 100644 tests/btrfs/291.out
>   create mode 100644 tests/generic/692
>   create mode 100644 tests/generic/692.out
> 

For the series, for my part,
Reviewed-by: Sweet Tea Dorminy <sweettea-kernel@dorminy.me>