Files
apfstests/tests/btrfs/228
T
Darrick J. Wong 7e98d41a6e fstests: move test group info to test files
Refactor every test in the entire test suite to use the new boilerplate
functions.  This also migrates all the test group information into the
test files.  This patch has been autogenerated via the command:

./tools/convert-group btrfs ceph cifs ext4 f2fs generic nfs ocfs2 overlay perf shared udf xfs

Signed-off-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Allison Henderson <allison.henderson@oracle.com>
Reviewed-by: Eric Biggers <ebiggers@google.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2021-06-27 22:50:02 +08:00

68 lines
2.2 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (C) 2020 SUSE Linux Products GmbH. All Rights Reserved.
#
# FS QA Test 228
#
# Test correct operation of free objectid related functionality
#
. ./common/preamble
_begin_fstest auto quick volume
# Import common functions.
. ./common/filter
# real QA test starts here
# Modify as appropriate.
_supported_fs btrfs
_require_scratch
_require_btrfs_command inspect-internal dump-tree
_scratch_mkfs > /dev/null
_scratch_mount
# create a new subvolume to validate its objectid is initialized accordingly,
# the expected value is 256 as this is the first free objectid in a new file
# system
$BTRFS_UTIL_PROG subvolume create $SCRATCH_MNT/newvol >> $seqres.full 2>&1 \
|| _fail "couldn't create subvol"
$BTRFS_UTIL_PROG inspect-internal dump-tree -t1 $SCRATCH_DEV \
| grep -q "256 ROOT_ITEM" || _fail "First subvol with id 256 doesn't exist"
# create new file in the new subvolume to validate its objectid is set as
# expected
touch $SCRATCH_MNT/newvol/file1 || _fail "Cannot create file in new subvol"
# ensure we have consistent view on-disk
sync
# get output related to the new root's dir entry
output_file=$tmp.output
$BTRFS_UTIL_PROG inspect-internal dump-tree -t5 $SCRATCH_DEV | grep -A2 "256 DIR_ITEM 1903355334" > $output_file
# get the objectid of the new root
new_root_id=$($AWK_PROG '/location key/{printf $3}' $output_file | tr -d '(')
[ $new_root_id -eq 256 ] || _fail "New root id not equal to 256"
# the given root should always be item number 2, since it's the only item
item_seq=$($AWK_PROG '/item/ {printf $2}' $output_file)
[ $item_seq -eq 2 ] || _fail "New root not at item idx 2"
# now parse the structure of the new subvol's tree
$BTRFS_UTIL_PROG inspect-internal dump-tree -t256 $SCRATCH_DEV > $output_file
# this is the subvol's own ino
first_ino=$($AWK_PROG '/item 0/{printf $4}' $output_file | tr -d '(')
[ $first_ino -eq 256 ] || _fail "First ino objectid in subvol not 256"
# this is ino of first file in subvol
second_ino=$($AWK_PROG '/item 4/{printf $4}' $output_file | tr -d '(')
[ $second_ino -eq 257 ] || _fail "Second ino objectid in subvol not 257"
# success, all done
echo "Silence is golden"
status=0
exit