btrfs-progs: tests: add case to verify large symbolic link handling in convert
The new test case will: - Create a symbolic which contains a 4095 bytes sized target on ext4 - Convert the ext4 to btrfs - Make sure we can still read the symbolic link For unpatched btrfs-convert, the resulted symbolic link will be rejected by kernel and fail. Signed-off-by: Qu Wenruo <wqu@suse.com>
This commit is contained in:
parent
6674a952ff
commit
073471fa27
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
# Make sure btrfs-convert can handle a symbol link which is 4095 bytes large
|
||||||
|
|
||||||
|
source "$TEST_TOP/common" || exit
|
||||||
|
source "$TEST_TOP/common.convert" || exit
|
||||||
|
|
||||||
|
setup_root_helper
|
||||||
|
prepare_test_dev 1G
|
||||||
|
check_global_prereq mkfs.ext4
|
||||||
|
|
||||||
|
# This is at the symbolic link size limit (PATH_MAX includes the terminating NUL).
|
||||||
|
link_target=$(printf "%0.sb" {1..4095})
|
||||||
|
|
||||||
|
convert_test_prep_fs ext4 mke2fs -t ext4 -b 4096
|
||||||
|
run_check $SUDO_HELPER ln -s "$link_target" "$TEST_MNT/symbol_link"
|
||||||
|
run_check_umount_test_dev
|
||||||
|
|
||||||
|
# For unpatched btrfs-convert, it will always append one byte to the
|
||||||
|
# link target, causing above 4095 target to be 4096, exactly one sector,
|
||||||
|
# resulting a regular file extent.
|
||||||
|
convert_test_do_convert
|
||||||
|
|
||||||
|
run_check_mount_test_dev
|
||||||
|
# If the unpatched btrfs-convert created a regular extent, and the kernel is
|
||||||
|
# newer enough, such readlink will be rejected by kernel.
|
||||||
|
run_check $SUDO_HELPER readlink "$TEST_MNT/symbol_link"
|
||||||
|
run_check_umount_test_dev
|
Loading…
Reference in New Issue