mirror of
https://github.com/kdave/btrfs-progs
synced 2025-02-16 17:56:51 +00:00
Relax the condition about a unique uuid for convert, only print a warning. In case we copy the uuid, it's expected that at the time the conversion starts the uuid is not unique as it sill exists on the source filesystem. In case user sets the uuid manually but it's still the same one as on the source filesystem we should also allow that, so it warns in this case as well. Update the test so it creates a block device where the uuid would be also cached by blkid and lets the non-unique check succeed. Issue: #404 Signed-off-by: David Sterba <dsterba@suse.com>
63 lines
1.6 KiB
Bash
Executable File
63 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
# Verify --uuid option on ext2
|
|
|
|
source "$TEST_TOP/common"
|
|
source "$TEST_TOP/common.convert"
|
|
|
|
setup_root_helper
|
|
check_prereq btrfs-convert
|
|
check_global_prereq mke2fs
|
|
setup_loopdevs 1
|
|
prepare_loopdevs
|
|
# Convert helpers need the backing file, can't pass ${loopdevs[1]}
|
|
TEST_DEV=${loopdev_prefix}1
|
|
|
|
convert_test_prep_fs ext4 mke2fs -t ext4 -b 4096
|
|
run_check_umount_test_dev
|
|
|
|
read_btrfs_fsid() {
|
|
run_check_stdout "$TOP/btrfs" inspect-internal dump-super "$TEST_DEV" |
|
|
grep '^fsid' | awk '{print $2}'
|
|
}
|
|
|
|
read_ext2_fsid() {
|
|
run_check_stdout dumpe2fs "$TEST_DEV" | grep "Filesystem UUID" | awk '{print $3}'
|
|
}
|
|
|
|
is_valid_uuid() {
|
|
run_check uuidparse --noheadings "$1" | grep 'invalid' && false
|
|
}
|
|
|
|
uuid=$(read_ext2_fsid)
|
|
is_valid_uuid "$uuid"
|
|
|
|
run_check "$TOP/btrfs-convert" "$TEST_DEV"
|
|
is_valid_uuid $(read_btrfs_fsid)
|
|
run_check "$TOP/btrfs-convert" --rollback "$TEST_DEV"
|
|
|
|
run_check "$TOP/btrfs-convert" --uuid new "$TEST_DEV"
|
|
is_valid_uuid $(read_btrfs_fsid)
|
|
run_check "$TOP/btrfs-convert" --rollback "$TEST_DEV"
|
|
|
|
run_check "$TOP/btrfs-convert" --uuid copy "$TEST_DEV"
|
|
btrfs_fsid=$(read_btrfs_fsid)
|
|
is_valid_uuid "$btrfs_fsid"
|
|
if ! [ "$uuid" = "$btrfs_fsid" ]; then
|
|
_fail "copied UUID mismatch"
|
|
fi
|
|
run_check "$TOP/btrfs-convert" --rollback "$TEST_DEV"
|
|
|
|
newuuid=$(run_check_stdout uuidgen)
|
|
run_check "$TOP/btrfs-convert" --uuid "$newuuid" "$TEST_DEV"
|
|
btrfs_fsid=$(read_btrfs_fsid)
|
|
is_valid_uuid "$btrfs_fsid"
|
|
if ! [ "$newuuid" = "$btrfs_fsid" ] ; then
|
|
_fail "user-defined UUID mismatch"
|
|
fi
|
|
run_check "$TOP/btrfs-convert" --rollback "$TEST_DEV"
|
|
|
|
run_mustfail "invalid UUID passed" \
|
|
"$TOP/btrfs-convert" --uuid invalid "$TEST_DEV"
|
|
|
|
cleanup_loopdevs
|