#
# Configuration file for f2fs
#

DEFAULT_MKFS_OPTIONS=""

function check_filesystem()
{
    local dev="$1"
    local ret

    /sbin/fsck.f2fs -f "$dev"
    ret="$?"
    echo fsck.f2fs exited with status "$ret"
    return "$ret"
}

function format_filesystem()
{
    local dev="$1"
    local opts="$2"

    if /sbin/mkfs.f2fs --help |& grep -q "[[:space:]]-f[[:space:]|]"; then
	# f2fs-tools v1.9+
	opts+=" -f"
    fi
    /sbin/mkfs.f2fs -q $opts "$dev"
    return $?
}

function setup_mount_opts()
{
    if test -n "$MNTOPTS" ; then
	F2FS_MOUNT_OPTIONS+="${F2FS_MOUNT_OPTIONS:+,}$MNTOPTS"
    fi
    if echo ",$F2FS_MOUNT_OPTIONS," | grep -q ',test_dummy_encryption,'; then
	local mode='\x00\x00\x00\x00'
	local raw="$(printf ""\\\\x%02x"" $(seq 0 63))"
	if lscpu | grep "Byte Order" | grep -q Little ; then
	    local size='\x40\x00\x00\x00'
	else
	    local size='\x00\x00\x00\x40'
	fi
	local key="${mode}${raw}${size}"
	keyctl new_session >& /dev/null
	echo -n -e "${key}" | keyctl padd logon fscrypt:4242424242424242 @s >& /dev/null
    fi
    export F2FS_MOUNT_OPTIONS="${F2FS_MOUNT_OPTIONS:+-o }$F2FS_MOUNT_OPTIONS"
}

function get_mkfs_opts()
{
    echo "$MKFS_OPTIONS"
}

function show_mkfs_opts()
{
    echo MKFS_OPTIONS: "$MKFS_OPTIONS"
}

function show_mount_opts()
{
    echo F2FS_MOUNT_OPTIONS: "$F2FS_MOUNT_OPTIONS"
}

function test_name_alias()
{
    echo "$1"
}

function reset_vars()
{
    unset F2FS_MOUNT_OPTIONS
    unset MKFS_OPTIONS
}
