[RFC PATCH 09/10] ftrfs: add Kconfig, Makefile and fs/ tree integration

Aurelien DESBRIERES
2026-04-13T12:24:25Z

From: Aurélien DESBRIERES <aurelien@hackers.camp>

Kconfig:
- CONFIG_FTRFS_FS: tristate, depends on BLOCK
- selects CRC32, REED_SOLOMON, REED_SOLOMON_ENC8/DEC8
- CONFIG_FTRFS_FS_XATTR: extended attributes (SELinux support)
- CONFIG_FTRFS_FS_SECURITY: security labels

Makefile:
- ftrfs.o composed of super.o, inode.o, dir.o, file.o,
edac.o, alloc.o, namei.o
- xattr.o conditionally compiled via CONFIG_FTRFS_FS_XATTR

fs/Kconfig: source fs/ftrfs/Kconfig (after ext2)
fs/Makefile: obj-$(CONFIG_FTRFS_FS) += ftrfs/

Signed-off-by: Aurélien DESBRIERES <aurelien@hackers.camp>
---
fs/ftrfs/Kconfig | 49 +++++++++++++++++++++++++++++++++++++++++++++++
fs/ftrfs/Makefile | 46 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 95 insertions(+)
create mode 100644 fs/ftrfs/Kconfig
create mode 100644 fs/ftrfs/Makefile

diff --git a/fs/ftrfs/Kconfig b/fs/ftrfs/Kconfig
new file mode 100644
index 000000000..e23fea923
--- /dev/null
+++ b/fs/ftrfs/Kconfig
@@ -0,0 +1,49 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# FTRFS filesystem configuration
+#
+
+config FTRFS_FS
+ tristate "FTRFS fault-tolerant radiation-robust filesystem"
+ depends on BLOCK
+ select CRC32
+ select REED_SOLOMON
+ select REED_SOLOMON_ENC8
+ select REED_SOLOMON_DEC8
+ help
+ FTRFS is a POSIX-compatible filesystem designed for dependable
+ storage in radiation-intensive environments. It provides:
+
+ - CRC32 checksumming per block and per inode
+ - Reed-Solomon forward error correction (FEC)
+ - EDAC-compatible error tracking
+
+ Originally described in:
+ Fuchs, Langer, Trinitis - ARCS 2015, TU Munich.
+ Targeting embedded Linux on MRAM/NOR flash for space applications.
+
+ To compile this filesystem support as a module, choose M here.
+ The module will be called ftrfs.
+
+ If unsure, say N.
+
+config FTRFS_FS_XATTR
+ bool "FTRFS extended attributes"
+ depends on FTRFS_FS
+ help
+ Extended attributes are name:value pairs associated with inodes.
+ They are required for SELinux, POSIX ACLs, and other security
+ frameworks that store per-file metadata outside the inode.
+ FTRFS xattrs follow the same namespace model as ext2/ext4.
+
+ If you are not using SELinux or POSIX ACLs, say N.
+config FTRFS_FS_SECURITY
+ bool "FTRFS Security Labels"
+ depends on FTRFS_FS_XATTR
+ help
+ Extended attributes are name:value pairs associated with inodes.
+ They are required for SELinux, POSIX ACLs, and other security
+ frameworks that store per-file metadata outside the inode.
+ FTRFS xattrs follow the same namespace model as ext2/ext4.
+
+ If you are not using SELinux or POSIX ACLs, say N.
diff --git a/fs/ftrfs/Makefile b/fs/ftrfs/Makefile
new file mode 100644
index 000000000..a792286ec
--- /dev/null
+++ b/fs/ftrfs/Makefile
@@ -0,0 +1,46 @@
+# SPDX-License-Identifier: GPL-2.0-only
+#
+# FTRFS — Fault-Tolerant Radiation-Robust Filesystem
+#
+
+obj-$(CONFIG_FTRFS_FS) += ftrfs.o
+
+ftrfs-y := super.o \
+ inode.o \
+ dir.o \
+ file.o \
+ edac.o \
+ alloc.o \
+ namei.o
+
+ftrfs-$(CONFIG_FTRFS_FS_XATTR) += xattr.o
+
+ifneq ($(KERNELRELEASE),)
+else
+
+ifneq ($(KERNEL_SRC),)
+ KERNELDIR := $(KERNEL_SRC)
+else
+ KERNELDIR ?= /lib/modules/$(shell uname -r)/build
+endif
+
+ifneq ($(O),)
+ KBUILD_OUTPUT := O=$(O)
+else
+ KBUILD_OUTPUT :=
+endif
+
+PWD := $(shell pwd)
+
+all:
+ $(MAKE) -C $(KERNELDIR) $(KBUILD_OUTPUT) M=$(PWD) \
+ CONFIG_FTRFS_FS=m CONFIG_FTRFS_FS_XATTR=n CONFIG_FTRFS_FS_SECURITY=n \
+ modules
+
+clean:
+ $(MAKE) -C $(KERNELDIR) $(KBUILD_OUTPUT) M=$(PWD) clean
+
+modules_install:
+ $(MAKE) -C $(KERNELDIR) $(KBUILD_OUTPUT) M=$(PWD) modules_install
+
+endif
--
2.52.0