common/f2fs: add _require_scratch_f2fs_compression()
authorEric Biggers <ebiggers@google.com>
Thu, 1 Oct 2020 00:25:06 +0000 (17:25 -0700)
committerEryu Guan <guaneryu@gmail.com>
Sun, 11 Oct 2020 03:28:01 +0000 (11:28 +0800)
Create the file common/f2fs, which will contain f2fs-specific utilities.

Then add a function _require_scratch_f2fs_compression(), which checks
for f2fs compression support on the scratch filesystem.

Signed-off-by: Eric Biggers <ebiggers@google.com>
Reviewed-by: Daeho Jeong <daeho43@gmail.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
common/f2fs [new file with mode: 0644]

diff --git a/common/f2fs b/common/f2fs
new file mode 100644 (file)
index 0000000..1b39d8c
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0-only
+# Copyright 2020 Google LLC
+
+# Require f2fs compression support on the scratch filesystem.
+# Optionally, check for support for a specific compression algorithm.
+_require_scratch_f2fs_compression()
+{
+       local algorithm=$1
+
+       _require_scratch
+
+       if [ ! -e /sys/fs/f2fs/features/compression ]; then
+               _notrun "Kernel doesn't support f2fs compression"
+       fi
+       # Note: '-O compression' is only accepted when used in
+       # combination with extra_attr.
+       if ! _scratch_mkfs -O compression,extra_attr >> $seqres.full; then
+               _notrun "f2fs-tools doesn't support compression"
+       fi
+       if [ -n "$algorithm" ]; then
+               if ! _scratch_mount "-o compress_algorithm=$algorithm"; then
+                       _notrun "Kernel doesn't support $algorithm compression algorithm for f2fs"
+               fi
+               _scratch_unmount
+       fi
+}