btrfs-progs: convert: add raid-stripe-tree to allowed features
The raid-stripe-tree can be enabled for convert, though it's still considered incomplete and slightly experimental. Due to that the tests need to be adjusted to check for support and skip mount eventually. Possible remaining options to add: quota, squota Issue: #694 Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
5b344c3e1a
commit
346a381923
8 changed files with 52 additions and 15 deletions
|
@ -68,7 +68,8 @@ static const struct btrfs_mkfs_features btrfs_convert_allowed_features = {
|
|||
BTRFS_FEATURE_INCOMPAT_BIG_METADATA |
|
||||
BTRFS_FEATURE_INCOMPAT_EXTENDED_IREF |
|
||||
BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA |
|
||||
BTRFS_FEATURE_INCOMPAT_NO_HOLES,
|
||||
BTRFS_FEATURE_INCOMPAT_NO_HOLES |
|
||||
BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE,
|
||||
.runtime_flags = BTRFS_FEATURE_RUNTIME_QUOTA,
|
||||
};
|
||||
|
||||
|
|
|
@ -214,19 +214,47 @@ convert_test_post_check_checksums() {
|
|||
grep -q 'FAILED' && _fail "file validation failed"
|
||||
}
|
||||
|
||||
# Check if convert can mount the image based on features
|
||||
# $1: name of the feature
|
||||
convert_can_mount() {
|
||||
local features="$1"
|
||||
|
||||
if [ "$features" = 'block-group-tree' ]; then
|
||||
if ! [ -f "/sys/fs/btrfs/features/block_group_tree" ]; then
|
||||
_log "Skip mount checks due to missing support of block-group-tree"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
if [ "$features" = 'raid-stripe-tree' ]; then
|
||||
if ! [ -f "/sys/fs/btrfs/features/raid_stripe_tree" ]; then
|
||||
_log "Skip mount checks due to missing support of raid-stripe-tree"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
# post conversion checks, all three in one call, on an unmounted image
|
||||
# $1: file with checksums
|
||||
# $2: file with permissions.
|
||||
# $3: file with acl entries.
|
||||
# $1: features for mount compatibility checks
|
||||
# $2: file with checksums
|
||||
# $3: file with permissions.
|
||||
# $4: file with acl entries.
|
||||
convert_test_post_checks_all() {
|
||||
_assert_path "$1"
|
||||
local features="$1"
|
||||
|
||||
_assert_path "$2"
|
||||
_assert_path "$3"
|
||||
_assert_path "$4"
|
||||
|
||||
if ! convert_can_mount "$features"; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
run_check_mount_test_dev
|
||||
convert_test_post_check_checksums "$1"
|
||||
convert_test_post_check_permissions "$2"
|
||||
convert_test_post_check_acl "$3"
|
||||
convert_test_post_check_checksums "$2"
|
||||
convert_test_post_check_permissions "$3"
|
||||
convert_test_post_check_acl "$4"
|
||||
|
||||
# Create a large file to trigger data chunk allocation
|
||||
generate_dataset "large"
|
||||
|
@ -285,7 +313,7 @@ convert_test() {
|
|||
run_check_umount_test_dev
|
||||
|
||||
convert_test_do_convert "$features" "$nodesize" "$fstype"
|
||||
convert_test_post_checks_all "$CHECKSUMTMP" "$EXT_PERMTMP" "$EXT_ACLTMP"
|
||||
convert_test_post_checks_all "$features" "$CHECKSUMTMP" "$EXT_PERMTMP" "$EXT_ACLTMP"
|
||||
rm -- "$CHECKSUMTMP"
|
||||
rm -- "$EXT_PERMTMP"
|
||||
rm -- "$EXT_ACLTMP"
|
||||
|
|
|
@ -12,7 +12,7 @@ check_kernel_support_acl
|
|||
|
||||
# Iterate over defaults and options that are not tied to hardware capabilities
|
||||
# or number of devices
|
||||
for feature in '' 'block-group-tree' ; do
|
||||
for feature in '' 'block-group-tree' 'raid-stripe-tree'; do
|
||||
convert_test ext2 "$feature" "ext2 4k nodesize" 4096 mke2fs -b 4096
|
||||
convert_test ext2 "$feature" "ext2 16k nodesize" 16384 mke2fs -b 4096
|
||||
convert_test ext2 "$feature" "ext2 64k nodesize" 65536 mke2fs -b 4096
|
||||
|
|
|
@ -12,7 +12,7 @@ check_kernel_support_acl
|
|||
|
||||
# Iterate over defaults and options that are not tied to hardware capabilities
|
||||
# or number of devices
|
||||
for feature in '' 'block-group-tree' ; do
|
||||
for feature in '' 'block-group-tree' 'raid-stripe-tree' ; do
|
||||
convert_test ext4 "$feature" "ext4 4k nodesize" 4096 mke2fs -t ext4 -b 4096
|
||||
convert_test ext4 "$feature" "ext4 16k nodesize" 16384 mke2fs -t ext4 -b 4096
|
||||
convert_test ext4 "$feature" "ext4 64k nodesize" 65536 mke2fs -t ext4 -b 4096
|
||||
|
|
|
@ -38,6 +38,10 @@ do_test() {
|
|||
|
||||
convert_test_do_convert "$features" "$nodesize"
|
||||
|
||||
if ! convert_can_mount "$features"; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
run_check_mount_test_dev
|
||||
convert_test_post_check_checksums "$CHECKSUMTMP"
|
||||
|
||||
|
@ -64,7 +68,7 @@ do_test() {
|
|||
|
||||
# Iterate over defaults and options that are not tied to hardware capabilities
|
||||
# or number of devices
|
||||
for feature in '' 'block-group-tree' ; do
|
||||
for feature in '' 'block-group-tree' 'raid-stripe-tree' ; do
|
||||
do_test "$feature" "ext4 4k nodesize" 4096 mke2fs -t ext4 -b 4096
|
||||
do_test "$feature" "ext4 16k nodesize" 16384 mke2fs -t ext4 -b 4096
|
||||
do_test "$feature" "ext4 64k nodesize" 65536 mke2fs -t ext4 -b 4096
|
||||
|
|
|
@ -15,7 +15,7 @@ prepare_test_dev
|
|||
|
||||
# Iterate over defaults and options that are not tied to hardware capabilities
|
||||
# or number of devices
|
||||
for feature in '' 'block-group-tree' ; do
|
||||
for feature in '' 'block-group-tree' 'raid-stripe-tree'; do
|
||||
convert_test reiserfs "$feature" "reiserfs 4k nodesize" 4096 mkreiserfs -b 4096
|
||||
convert_test reiserfs "$feature" "reiserfs 16k nodesize" 16384 mkreiserfs -b 4096
|
||||
convert_test reiserfs "$feature" "reiserfs 64k nodesize" 65536 mkreiserfs -b 4096
|
||||
|
|
|
@ -40,6 +40,10 @@ do_test() {
|
|||
|
||||
convert_test_do_convert "$features" "$nodesize"
|
||||
|
||||
if ! convert_can_mount "$features"; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
run_check_mount_test_dev
|
||||
convert_test_post_check_checksums "$CHECKSUMTMP"
|
||||
|
||||
|
@ -66,7 +70,7 @@ do_test() {
|
|||
|
||||
# Iterate over defaults and options that are not tied to hardware capabilities
|
||||
# or number of devices
|
||||
for feature in '' 'block-group-tree' ; do
|
||||
for feature in '' 'block-group-tree' 'raid-stripe-tree'; do
|
||||
do_test "$feature" "reiserfs 4k nodesize" 4096 mkreiserfs -b 4096
|
||||
do_test "$feature" "reiserfs 16k nodesize" 16384 mkreiserfs -b 4096
|
||||
do_test "$feature" "reiserfs 64k nodesize" 65536 mkreiserfs -b 4096
|
||||
|
|
|
@ -17,6 +17,6 @@ prepare_test_dev
|
|||
|
||||
# Iterate over defaults and options that are not tied to hardware capabilities
|
||||
# or number of devices. Test only 4K block size as minimum.
|
||||
for feature in '' 'block-group-tree' ; do
|
||||
for feature in '' 'block-group-tree' 'raid-stripe-tree'; do
|
||||
convert_test ntfs "$feature" "ntfs 4k nodesize" 4096 mkfs.ntfs -s 4096
|
||||
done
|
||||
|
|
Loading…
Reference in a new issue