Message ID | 20231204-btrfs-raid-v1-1-b254eb1bcff8@wdc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | fstests: add tests for btrfs' raid-stripe-tree feature | expand |
On Mon, Dec 4, 2023 at 1:25 PM Johannes Thumshirn <johannes.thumshirn@wdc.com> wrote: > > Test a simple 4k write on all RAID profiles currently supported with the > raid-stripe-tree. > > Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> > --- > tests/btrfs/302 | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ > tests/btrfs/302.out | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 113 insertions(+) > > diff --git a/tests/btrfs/302 b/tests/btrfs/302 > new file mode 100755 > index 000000000000..1d6693beff4c > --- /dev/null > +++ b/tests/btrfs/302 > @@ -0,0 +1,55 @@ > +#! /bin/bash > +# SPDX-License-Identifier: GPL-2.0 > +# Copyright (c) 2023 Western Digital Cooperation. All Rights Reserved. > +# > +# FS QA Test 302 > +# > +# Test on-disk layout of RAID Stripe Tree Metadata All the tests in the patchset have this exact same description. Can we get a more specific description for each one? > +# > +. ./common/preamble > +_begin_fstest auto quick raid remount volume raid-stripe-tree > + > +. ./common/filter > +. ./common/filter.btrfs > + > +_supported_fs btrfs > +_require_test The test device is not used, this is not needed. > +_require_btrfs_command inspect-internal dump-tree > +_require_btrfs_mkfs_feature "raid-stripe-tree" > +_require_scratch_dev_pool 4 > +_require_xfs_io_command "pwrite" > +_require_xfs_io_command "fsync" This can be skipped, the checks for the pwrite and fsync commands. We never check for those as all xfs_io versions should have those, as they belong to the most basic and universally available commands. > +_require_btrfs_fs_feature "raid_stripe_tree" > + > +test_4k_write() > +{ > + profile=$1 > + ndevs=$2 These variables should be made local. All these comments also apply to all the other tests introduced in the patchset. Thanks. > + > + _scratch_dev_pool_get $ndevs > + > + echo "==== Testing $profile ====" > + _scratch_pool_mkfs -d $profile -m $profile > + _scratch_mount > + > + $XFS_IO_PROG -fc "pwrite 0 4k" "$SCRATCH_MNT/foo" | _filter_xfs_io > + > + _scratch_cycle_mount > + md5sum "$SCRATCH_MNT/foo" | _filter_scratch > + > + _scratch_unmount > + > + $BTRFS_UTIL_PROG inspect-internal dump-tree -t raid_stripe $SCRATCH_DEV_POOL |\ > + _filter_btrfs_version | _filter_stripe_tree > + > + _scratch_dev_pool_put > +} > + > +echo "= Test basic 4k write =" > +test_4k_write raid0 2 > +test_4k_write raid1 2 > +test_4k_write raid10 4 > + > +# success, all done > +status=0 > +exit > diff --git a/tests/btrfs/302.out b/tests/btrfs/302.out > new file mode 100644 > index 000000000000..149630e69501 > --- /dev/null > +++ b/tests/btrfs/302.out > @@ -0,0 +1,58 @@ > +QA output created by 302 > += Test basic 4k write = > +==== Testing raid0 ==== > +wrote 4096/4096 bytes at offset 0 > +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > +5fed275e7617a806f94c173746a2a723 SCRATCH_MNT/foo > + > +raid stripe tree key (RAID_STRIPE_TREE ROOT_ITEM 0) > +leaf XXXXXXXXX items X free space XXXXX generation X owner RAID_STRIPE_TREE > +leaf XXXXXXXXX flags 0x1(WRITTEN) backref revision 1 > +checksum stored <CHECKSUM> > +checksum calced <CHECKSUM> > +fs uuid <UUID> > +chunk uuid <UUID> > + item 0 key (XXXXXX RAID_STRIPE 4096) itemoff XXXXX itemsize 24 > + encoding: RAID0 > + stripe 0 devid 1 physical XXXXXXXXX > +total bytes XXXXXXXX > +bytes used XXXXXX > +uuid <UUID> > +==== Testing raid1 ==== > +wrote 4096/4096 bytes at offset 0 > +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > +5fed275e7617a806f94c173746a2a723 SCRATCH_MNT/foo > + > +raid stripe tree key (RAID_STRIPE_TREE ROOT_ITEM 0) > +leaf XXXXXXXXX items X free space XXXXX generation X owner RAID_STRIPE_TREE > +leaf XXXXXXXXX flags 0x1(WRITTEN) backref revision 1 > +checksum stored <CHECKSUM> > +checksum calced <CHECKSUM> > +fs uuid <UUID> > +chunk uuid <UUID> > + item 0 key (XXXXXX RAID_STRIPE 4096) itemoff XXXXX itemsize 40 > + encoding: RAID1 > + stripe 0 devid 1 physical XXXXXXXXX > + stripe 1 devid 2 physical XXXXXXXXX > +total bytes XXXXXXXX > +bytes used XXXXXX > +uuid <UUID> > +==== Testing raid10 ==== > +wrote 4096/4096 bytes at offset 0 > +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) > +5fed275e7617a806f94c173746a2a723 SCRATCH_MNT/foo > + > +raid stripe tree key (RAID_STRIPE_TREE ROOT_ITEM 0) > +leaf XXXXXXXXX items X free space XXXXX generation X owner RAID_STRIPE_TREE > +leaf XXXXXXXXX flags 0x1(WRITTEN) backref revision 1 > +checksum stored <CHECKSUM> > +checksum calced <CHECKSUM> > +fs uuid <UUID> > +chunk uuid <UUID> > + item 0 key (XXXXXX RAID_STRIPE 4096) itemoff XXXXX itemsize 40 > + encoding: RAID10 > + stripe 0 devid 1 physical XXXXXXXXX > + stripe 1 devid 2 physical XXXXXXXXX > +total bytes XXXXXXXX > +bytes used XXXXXX > +uuid <UUID> > > -- > 2.43.0 > >
diff --git a/tests/btrfs/302 b/tests/btrfs/302 new file mode 100755 index 000000000000..1d6693beff4c --- /dev/null +++ b/tests/btrfs/302 @@ -0,0 +1,55 @@ +#! /bin/bash +# SPDX-License-Identifier: GPL-2.0 +# Copyright (c) 2023 Western Digital Cooperation. All Rights Reserved. +# +# FS QA Test 302 +# +# Test on-disk layout of RAID Stripe Tree Metadata +# +. ./common/preamble +_begin_fstest auto quick raid remount volume raid-stripe-tree + +. ./common/filter +. ./common/filter.btrfs + +_supported_fs btrfs +_require_test +_require_btrfs_command inspect-internal dump-tree +_require_btrfs_mkfs_feature "raid-stripe-tree" +_require_scratch_dev_pool 4 +_require_xfs_io_command "pwrite" +_require_xfs_io_command "fsync" +_require_btrfs_fs_feature "raid_stripe_tree" + +test_4k_write() +{ + profile=$1 + ndevs=$2 + + _scratch_dev_pool_get $ndevs + + echo "==== Testing $profile ====" + _scratch_pool_mkfs -d $profile -m $profile + _scratch_mount + + $XFS_IO_PROG -fc "pwrite 0 4k" "$SCRATCH_MNT/foo" | _filter_xfs_io + + _scratch_cycle_mount + md5sum "$SCRATCH_MNT/foo" | _filter_scratch + + _scratch_unmount + + $BTRFS_UTIL_PROG inspect-internal dump-tree -t raid_stripe $SCRATCH_DEV_POOL |\ + _filter_btrfs_version | _filter_stripe_tree + + _scratch_dev_pool_put +} + +echo "= Test basic 4k write =" +test_4k_write raid0 2 +test_4k_write raid1 2 +test_4k_write raid10 4 + +# success, all done +status=0 +exit diff --git a/tests/btrfs/302.out b/tests/btrfs/302.out new file mode 100644 index 000000000000..149630e69501 --- /dev/null +++ b/tests/btrfs/302.out @@ -0,0 +1,58 @@ +QA output created by 302 += Test basic 4k write = +==== Testing raid0 ==== +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +5fed275e7617a806f94c173746a2a723 SCRATCH_MNT/foo + +raid stripe tree key (RAID_STRIPE_TREE ROOT_ITEM 0) +leaf XXXXXXXXX items X free space XXXXX generation X owner RAID_STRIPE_TREE +leaf XXXXXXXXX flags 0x1(WRITTEN) backref revision 1 +checksum stored <CHECKSUM> +checksum calced <CHECKSUM> +fs uuid <UUID> +chunk uuid <UUID> + item 0 key (XXXXXX RAID_STRIPE 4096) itemoff XXXXX itemsize 24 + encoding: RAID0 + stripe 0 devid 1 physical XXXXXXXXX +total bytes XXXXXXXX +bytes used XXXXXX +uuid <UUID> +==== Testing raid1 ==== +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +5fed275e7617a806f94c173746a2a723 SCRATCH_MNT/foo + +raid stripe tree key (RAID_STRIPE_TREE ROOT_ITEM 0) +leaf XXXXXXXXX items X free space XXXXX generation X owner RAID_STRIPE_TREE +leaf XXXXXXXXX flags 0x1(WRITTEN) backref revision 1 +checksum stored <CHECKSUM> +checksum calced <CHECKSUM> +fs uuid <UUID> +chunk uuid <UUID> + item 0 key (XXXXXX RAID_STRIPE 4096) itemoff XXXXX itemsize 40 + encoding: RAID1 + stripe 0 devid 1 physical XXXXXXXXX + stripe 1 devid 2 physical XXXXXXXXX +total bytes XXXXXXXX +bytes used XXXXXX +uuid <UUID> +==== Testing raid10 ==== +wrote 4096/4096 bytes at offset 0 +XXX Bytes, X ops; XX:XX:XX.X (XXX YYY/sec and XXX ops/sec) +5fed275e7617a806f94c173746a2a723 SCRATCH_MNT/foo + +raid stripe tree key (RAID_STRIPE_TREE ROOT_ITEM 0) +leaf XXXXXXXXX items X free space XXXXX generation X owner RAID_STRIPE_TREE +leaf XXXXXXXXX flags 0x1(WRITTEN) backref revision 1 +checksum stored <CHECKSUM> +checksum calced <CHECKSUM> +fs uuid <UUID> +chunk uuid <UUID> + item 0 key (XXXXXX RAID_STRIPE 4096) itemoff XXXXX itemsize 40 + encoding: RAID10 + stripe 0 devid 1 physical XXXXXXXXX + stripe 1 devid 2 physical XXXXXXXXX +total bytes XXXXXXXX +bytes used XXXXXX +uuid <UUID>
Test a simple 4k write on all RAID profiles currently supported with the raid-stripe-tree. Signed-off-by: Johannes Thumshirn <johannes.thumshirn@wdc.com> --- tests/btrfs/302 | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++ tests/btrfs/302.out | 58 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+)