JustPaste.it

#!/sbin/sh

. "$env"

fs_type="f2fs"

fs_system_opts="ro"
fs_system_flags="wait"

#Default
#fs_data_opts="discard,nosuid,nodev,noatime,inline_xattr"
fs_data_opts="discard,nosuid,nodev,noatime,inline_xattr,seclabel,nodiratime,user_xattr,nobarrier"
fs_data_flags="wait,check,encryptable=/dev/block/bootdevice/by-name/cryptkey"

fs_cache_opts="discard,nosuid,nodev,noatime,inline_xattr"
fs_cache_flags="wait"

# fstab_add <fstab> <partition> <fs type> <mount opts> <mount flags>
fstab_add() {
awk -vpart="/$2" -vfs="$3" -vopts="$4" -vflags="$5" '
$2 == part && $3 == fs {
if (found) next
if ($4 != opts) { $4 = opts; modified++ }
if ($5 != flags) { $5 = flags; modified++ }
found++
}
$2 == part && $3 != fs && !found {
print $1 " " $2 " " fs " " opts " " flags
found = ++modified
}
{ print }
END { exit !modified }
' "$1" > "$1-"
[ $? = 0 ] && cat "$1-" > "$1" && print "Added $3 /$2 to $1"
rm -f "$1-"
}

print "Patching the fstab for $fs_type support..."

found_fstab=false

for fstab in fstab.*; do
[ -f "$fstab" ] || continue
found_fstab=true

echo "Found fstab: $fstab"

# Uncomment these if you wish to use them, but I do not recommend it!
# f2fs has no advantages for a read-only file system, and it may reduce
# stability. Cache partitions are not used often, and other things that
# rely on it are not prepared for f2fs.

#fstab_add "$fstab" system "$fs_type" "$fs_system_opts" "$fs_system_flags"
fstab_add "$fstab" data "$fs_type" "$fs_data_opts" "$fs_data_flags"
fstab_add "$fstab" cache "$fs_type" "$fs_cache_opts" "$fs_cache_flags"
done

$found_fstab || {
print "Unable to find an fstab!"
}

exit 0