[Concept,12/15] ext4l: Add mmp.c to the build

Message ID 20251221212028.857348-13-sjg@u-boot.org
State New
Headers
Series ext4l: Add jbd2 and remaining ext4l files to build (part F) |

Commit Message

Simon Glass Dec. 21, 2025, 9:20 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

Add support for multi-mount protection.

Use ext4_uboot.h compatibility layer and add stubs for:
- init_utsname() - returns static node name "u-boot"
- sb_start_write/sb_end_write - no-op stubs

Co-developed-by: Claude Opus 4.5 <noreply@anthropic.com>
Signed-off-by: Simon Glass <simon.glass@canonical.com>
---

 fs/ext4l/Makefile     |  2 +-
 fs/ext4l/ext4_uboot.h | 17 ++++++++++++++++-
 fs/ext4l/mmp.c        |  6 +-----
 fs/ext4l/stub.c       | 11 ++---------
 4 files changed, 20 insertions(+), 16 deletions(-)
  

Patch

diff --git a/fs/ext4l/Makefile b/fs/ext4l/Makefile
index 784ba7203b1..df3c016e3c1 100644
--- a/fs/ext4l/Makefile
+++ b/fs/ext4l/Makefile
@@ -8,7 +8,7 @@  obj-y := interface.o stub.o
 obj-y	+= balloc.o bitmap.o block_validity.o dir.o ext4_jbd2.o extents.o \
 		extents_status.o file.o fsync.o hash.o ialloc.o \
 		indirect.o inline.o inode.o mballoc.o migrate.o \
-		namei.o page-io.o readpage.o \
+		mmp.o namei.o page-io.o readpage.o \
 		super.o symlink.o xattr.o \
 		xattr_hurd.o xattr_trusted.o \
 		xattr_user.o fast_commit.o orphan.o
diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h
index e57e479a462..409391dda20 100644
--- a/fs/ext4l/ext4_uboot.h
+++ b/fs/ext4l/ext4_uboot.h
@@ -2271,10 +2271,11 @@  int is_power_of_2(unsigned long n);
 
 /* Superblock write operations */
 #define sb_start_write_trylock(sb)	({ (void)(sb); 1; })
+#define sb_start_write(sb)		do { } while (0)
 #define sb_end_write(sb)		do { } while (0)
 
 /* Scheduler stubs */
-#define schedule_timeout_interruptible(t)	do { } while (0)
+#define schedule_timeout_interruptible(t)	({ (void)(t); 0; })
 
 /* Page allocation - declarations for stub.c */
 unsigned long get_zeroed_page(gfp_t gfp);
@@ -2928,4 +2929,18 @@  loff_t seq_lseek(struct file *f, loff_t o, int w);
 /* Ratelimited printk for journal.c */
 #define pr_notice_ratelimited(fmt, ...)	pr_notice(fmt, ##__VA_ARGS__)
 
+/*
+ * Stubs for mmp.c
+ */
+
+/* init_utsname - returns pointer to system name structure */
+struct new_utsname {
+	char nodename[65];
+};
+static inline struct new_utsname *init_utsname(void)
+{
+	static struct new_utsname uts = { .nodename = "u-boot" };
+	return &uts;
+}
+
 #endif /* __EXT4_UBOOT_H__ */
diff --git a/fs/ext4l/mmp.c b/fs/ext4l/mmp.c
index ab1ff51302f..2da65c022f4 100644
--- a/fs/ext4l/mmp.c
+++ b/fs/ext4l/mmp.c
@@ -1,10 +1,6 @@ 
 // SPDX-License-Identifier: GPL-2.0
-#include <linux/fs.h>
-#include <linux/random.h>
-#include <linux/buffer_head.h>
-#include <linux/utsname.h>
-#include <linux/kthread.h>
 
+#include "ext4_uboot.h"
 #include "ext4.h"
 
 /* Checksumming functions */
diff --git a/fs/ext4l/stub.c b/fs/ext4l/stub.c
index 5448040e14c..1bf1e958e48 100644
--- a/fs/ext4l/stub.c
+++ b/fs/ext4l/stub.c
@@ -461,10 +461,7 @@  int dquot_suspend(void *sb, int flags)
 	return 0;
 }
 
-/* MMP daemon */
-void ext4_stop_mmpd(void *sbi)
-{
-}
+/* MMP daemon - now in mmp.c */
 
 /* Sysfs */
 void ext4_unregister_sysfs(void *sb)
@@ -552,11 +549,7 @@  u64 sb_bdev_nr_blocks(struct super_block *sb)
 /* bdev_can_atomic_write is now a macro in ext4_uboot.h */
 /* bdev_atomic_write_unit_max_bytes is now a macro in ext4_uboot.h */
 
-/* Multi-mount protection */
-int ext4_multi_mount_protect(void *sb, unsigned long long mmp_block)
-{
-	return 0;
-}
+/* Multi-mount protection - now in mmp.c */
 
 /* Generic dentry ops */
 void generic_set_sb_d_ops(struct super_block *sb)