fs/f2fs: add support for creating a f2fs image
authorGrzegorz Blach <grzegorz@blach.pl>
Fri, 26 Oct 2018 20:00:16 +0000 (22:00 +0200)
committerThomas Petazzoni <thomas.petazzoni@bootlin.com>
Sat, 3 Nov 2018 14:14:47 +0000 (15:14 +0100)
This patch makes possible to create rootfs image using f2fs
filesystem.

Signed-off-by: Grzegorz Blach <grzegorz@blach.pl>
[Thomas:
 - keep only the minimal functionality, as suggested by Yann E. Morin
 - use truncate -s instead of dd to create the initial empty image
   file, as suggested by Yann E. Morin]
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
fs/Config.in
fs/f2fs/Config.in [new file with mode: 0644]
fs/f2fs/f2fs.mk [new file with mode: 0644]

index 24f22fd7e31b1376829a175cf4980b506baf8119..527051ef5442fe3ddd9f7f6974b8ce3d484f0a9f 100644 (file)
@@ -6,6 +6,7 @@ source "fs/cloop/Config.in"
 source "fs/cpio/Config.in"
 source "fs/cramfs/Config.in"
 source "fs/ext2/Config.in"
+source "fs/f2fs/Config.in"
 source "fs/initramfs/Config.in"
 source "fs/iso9660/Config.in"
 source "fs/jffs2/Config.in"
diff --git a/fs/f2fs/Config.in b/fs/f2fs/Config.in
new file mode 100644 (file)
index 0000000..e62bc65
--- /dev/null
@@ -0,0 +1,21 @@
+config BR2_TARGET_ROOTFS_F2FS
+       bool "f2fs root filesystem"
+       select BR2_PACKAGE_HOST_F2FS_TOOLS
+       help
+         Build a f2fs root filesystem. If you enable this option, you
+         probably want to enable the f2fs-tools package too.
+
+if BR2_TARGET_ROOTFS_F2FS
+
+config BR2_TARGET_ROOTFS_F2FS_LABEL
+       string "filesystem label"
+
+config BR2_TARGET_ROOTFS_F2FS_SIZE
+       string "filesystem size"
+       default "100M"
+       help
+         The size of the filesystem image in bytes.
+         Suffix with K, M, G or T for power-of-two kilo-, mega-, giga-
+         or terabytes.
+
+endif # BR2_TARGET_ROOTFS_F2FS
diff --git a/fs/f2fs/f2fs.mk b/fs/f2fs/f2fs.mk
new file mode 100644 (file)
index 0000000..c954386
--- /dev/null
@@ -0,0 +1,30 @@
+################################################################################
+#
+# Build the f2fs root filesystem image
+#
+################################################################################
+
+F2FS_SIZE = $(call qstrip,$(BR2_TARGET_ROOTFS_F2FS_SIZE))
+ifeq ($(BR2_TARGET_ROOTFS_F2FS)-$(F2FS_SIZE),y-)
+$(error BR2_TARGET_ROOTFS_F2FS_SIZE cannot be empty)
+endif
+
+# qstrip results in stripping consecutive spaces into a single one. So the
+# variable is not qstrip-ed to preserve the integrity of the string value.
+F2FS_LABEL := $(subst ",,$(BR2_TARGET_ROOTFS_F2FS_LABEL))
+# ")
+
+F2FS_OPTS = \
+       -f \
+       -l "$(F2FS_LABEL)"
+
+ROOTFS_F2FS_DEPENDENCIES = host-f2fs-tools
+
+define ROOTFS_F2FS_CMD
+       $(RM) -f $@
+       truncate -s $(F2FS_SIZE) $@
+       $(HOST_DIR)/sbin/mkfs.f2fs $(F2FS_OPTS) $@
+       $(HOST_DIR)/sbin/sload.f2fs -f $(TARGET_DIR) $@
+endef
+
+$(eval $(rootfs))