| #! /bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| # Copyright (c) 2023 Western Digital Cooperation. All Rights Reserved. |
| # |
| # FS QA Test 304 |
| # |
| # Test on-disk layout of RAID Stripe Tree Metadata writing 4k to a new file on |
| # a pristine file system. |
| # |
| . ./common/preamble |
| _begin_fstest auto quick raid remount volume raid-stripe-tree |
| |
| . ./common/filter |
| . ./common/filter.btrfs |
| |
| _require_btrfs_command inspect-internal dump-tree |
| _require_btrfs_mkfs_feature "raid-stripe-tree" |
| _require_scratch_dev_pool 4 |
| _require_btrfs_fs_feature "raid_stripe_tree" |
| _require_btrfs_fs_feature "free_space_tree" |
| _require_btrfs_free_space_tree |
| _require_btrfs_no_compress |
| |
| test $(_get_page_size) -eq 4096 || _notrun "this tests requires 4k pagesize" |
| |
| test_4k_write() |
| { |
| local profile=$1 |
| local ndevs=$2 |
| |
| _scratch_dev_pool_get $ndevs |
| |
| echo "==== Testing $profile ====" |
| _scratch_pool_mkfs -d $profile -m $profile -O raid-stripe-tree |
| _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_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 |