mirror of
https://github.com/kdave/btrfs-progs
synced 2024-12-23 14:45:19 +00:00
btrfs-progs: tests: post btrfs-convert verify permissions and ACLs
Signed-off-by: Lakshmipathi.G <Lakshmipathi.G@giis.co.in> Signed-off-by: David Sterba <dsterba@suse.com>
This commit is contained in:
parent
9cc6e92972
commit
c2f3212502
@ -123,6 +123,38 @@ convert_test_gen_checksums() {
|
||||
count=1 >/dev/null 2>&1
|
||||
run_check_stdout $SUDO_HELPER find $TEST_MNT -type f ! -name 'image' -exec md5sum {} \+ > "$CHECKSUMTMP"
|
||||
}
|
||||
# list $TEST_MNT data set file permissions.
|
||||
# $1: path where the permissions will be stored
|
||||
convert_test_perm() {
|
||||
local PERMTMP
|
||||
PERMTMP="$1"
|
||||
FILES_LIST=$(mktemp --tmpdir btrfs-progs-convert.fileslistXXXXXX)
|
||||
|
||||
run_check $SUDO_HELPER dd if=/dev/zero of=$TEST_MNT/test bs=$nodesize \
|
||||
count=1 >/dev/null 2>&1
|
||||
run_check_stdout $SUDO_HELPER find $TEST_MNT -type f ! -name 'image' -fprint $FILES_LIST
|
||||
# Fix directory entries order
|
||||
sort $FILES_LIST -o $FILES_LIST
|
||||
for file in `cat $FILES_LIST` ;do
|
||||
run_check_stdout $SUDO_HELPER getfacl --absolute-names $file >> "$PERMTMP"
|
||||
done
|
||||
rm -- $FILES_LIST
|
||||
}
|
||||
# list acls of files on $TEST_MNT
|
||||
# $1: path where the acls will be stored
|
||||
convert_test_acl() {
|
||||
local ACLSTMP
|
||||
ACLTMP="$1"
|
||||
FILES_LIST=$(mktemp --tmpdir btrfs-progs-convert.fileslistXXXXXX)
|
||||
|
||||
run_check_stdout $SUDO_HELPER find $TEST_MNT/acls -type f -fprint $FILES_LIST
|
||||
# Fix directory entries order
|
||||
sort $FILES_LIST -o $FILES_LIST
|
||||
for file in `cat $FILES_LIST`;do
|
||||
run_check_stdout $SUDO_HELPER getfattr --absolute-names -d $file >> "$ACLTMP"
|
||||
done
|
||||
rm -- $FILES_LIST
|
||||
}
|
||||
|
||||
# do conversion with given features and nodesize, fsck afterwards
|
||||
# $1: features, argument of -O, can be empty
|
||||
@ -133,15 +165,68 @@ convert_test_do_convert() {
|
||||
run_check $TOP/btrfs-show-super -Ffa $TEST_DEV
|
||||
}
|
||||
|
||||
# post conversion check, verify file permissions.
|
||||
# $1: file with ext permissions.
|
||||
convert_test_post_check_permissions() {
|
||||
local EXT_PERMTMP
|
||||
local BTRFS_PERMTMP
|
||||
|
||||
EXT_PERMTMP="$1"
|
||||
BTRFS_PERMTMP=$(mktemp --tmpdir btrfs-progs-convert.permXXXXXX)
|
||||
convert_test_perm "$BTRFS_PERMTMP"
|
||||
|
||||
btrfs_perm=`md5sum $BTRFS_PERMTMP | cut -f1 -d' '`
|
||||
ext_perm=`md5sum $EXT_PERMTMP | cut -f1 -d' '`
|
||||
|
||||
if [ "$btrfs_perm" != "$ext_perm" ];
|
||||
then
|
||||
btrfs_perm_file=`md5sum $BTRFS_PERMTMP | cut -f2 -d' '`
|
||||
ext_perm_file=`md5sum $EXT_PERMTMP | cut -f2 -d' '`
|
||||
_fail "file permission failed. Mismatched BTRFS:$btrfs_perm_file:$btrfs_perm EXT:$ext_perm_file:$ext_perm"
|
||||
fi
|
||||
|
||||
rm -- $BTRFS_PERMTMP
|
||||
}
|
||||
# post conversion check, compare BTRFS file acls against EXT.
|
||||
# $1: file with ext acls.
|
||||
convert_test_post_check_acl() {
|
||||
local EXT_ACLTMP
|
||||
local BTRFS_ACLTMP
|
||||
|
||||
EXT_ACLTMP="$1"
|
||||
BTRFS_ACLTMP=$(mktemp --tmpdir btrfs-progs-convert.aclsXXXXXXX)
|
||||
convert_test_acl "$BTRFS_ACLTMP"
|
||||
|
||||
btrfs_acl=`md5sum $BTRFS_ACLTMP | cut -f1 -d' '`
|
||||
ext_acl=`md5sum $EXT_ACLTMP | cut -f1 -d' '`
|
||||
|
||||
if [ "$btrfs_acl" != "$ext_acl" ]
|
||||
then
|
||||
btrfs_acl_file=`md5sum $BTRFS_ACLTMP | cut -f2 -d' '`
|
||||
ext_acl_file=`md5sum $EXT_ACLTMP | cut -f2 -d' '`
|
||||
_fail "file acl failed. Mismatched BTRFS:$btrfs_acl_file:$btrfs_acl EXT:$ext_acl_file:$ext_acl"
|
||||
fi
|
||||
|
||||
rm -- $BTRFS_ACLTMP
|
||||
}
|
||||
# post conversion checks, verify md5sums
|
||||
# $1: file with checksums
|
||||
# $2: file with permissions.
|
||||
# $3: file with acl entries.
|
||||
convert_test_post_check() {
|
||||
local CHECKSUMTMP
|
||||
local EXT_PERMTMP
|
||||
local EXT_ACLTMP
|
||||
|
||||
CHECKSUMTMP="$1"
|
||||
EXT_PERMTMP="$2"
|
||||
EXT_ACLTMP="$3"
|
||||
|
||||
run_check_mount_test_dev
|
||||
run_check_stdout $SUDO_HELPER md5sum -c "$CHECKSUMTMP" |
|
||||
grep -q 'FAILED' && _fail "file validation failed"
|
||||
convert_test_post_check_permissions "$EXT_PERMTMP"
|
||||
convert_test_post_check_acl "$EXT_ACLTMP"
|
||||
run_check_umount_test_dev
|
||||
}
|
||||
|
||||
@ -161,6 +246,8 @@ convert_test() {
|
||||
local nodesize
|
||||
local msg
|
||||
local CHECKSUMTMP
|
||||
local EXT_PERMTMP
|
||||
local EXT_ACLTMP
|
||||
|
||||
features="$1"
|
||||
msg="$2"
|
||||
@ -170,13 +257,19 @@ convert_test() {
|
||||
convert_test_prep_fs "$@"
|
||||
populate_fs
|
||||
CHECKSUMTMP=$(mktemp --tmpdir btrfs-progs-convert.XXXXXXXXXX)
|
||||
EXT_PERMTMP=$(mktemp --tmpdir btrfs-progs-convert.permXXXXXX)
|
||||
EXT_ACLTMP=$(mktemp --tmpdir btrfs-progs-convert.aclsXXXXXXX)
|
||||
convert_test_gen_checksums "$CHECKSUMTMP"
|
||||
convert_test_perm "$EXT_PERMTMP"
|
||||
convert_test_acl "$EXT_ACLTMP"
|
||||
|
||||
run_check_umount_test_dev
|
||||
|
||||
convert_test_do_convert "$features" "$nodesize"
|
||||
convert_test_post_check "$CHECKSUMTMP"
|
||||
convert_test_post_check "$CHECKSUMTMP" "$EXT_PERMTMP" "$EXT_ACLTMP"
|
||||
rm $CHECKSUMTMP
|
||||
rm $EXT_PERMTMP
|
||||
rm $EXT_ACLTMP
|
||||
|
||||
convert_test_post_rollback
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user