[Concept,06/12] linux: Add mbcache.h header with metadata cache stubs

Message ID 20260118133734.6.986fa9e239675f821c683f38d325bfb4a4c31183@changeid
State New
Headers
Series ext4l: Continue reducing ext4_uboot.h size with more headers |

Commit Message

Simon Glass Jan. 18, 2026, 8:37 p.m. UTC
  From: Simon Glass <simon.glass@canonical.com>

Create linux/mbcache.h with mb_cache structure and cache operation
stubs. Metadata block caching is not supported in U-Boot.

Update ext4_uboot.h to use the new header instead of duplicating
these definitions.

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

---

 fs/ext4l/ext4_uboot.h   | 29 ++------------------
 include/linux/mbcache.h | 60 +++++++++++++++++++++++++++++++++++++++++
 2 files changed, 62 insertions(+), 27 deletions(-)
 create mode 100644 include/linux/mbcache.h
  

Patch

diff --git a/fs/ext4l/ext4_uboot.h b/fs/ext4l/ext4_uboot.h
index b6744894169..ba90cce3e67 100644
--- a/fs/ext4l/ext4_uboot.h
+++ b/fs/ext4l/ext4_uboot.h
@@ -1477,33 +1477,8 @@  static inline void super_set_uuid(struct super_block *sb, const u8 *uuid,
 
 /* super_set_sysfs_name_bdev is now in linux/kobject.h */
 
-/*
- * mb_cache - metadata block cache stubs for xattr.c
- * Not supported in U-Boot - xattr caching disabled
- */
-struct mb_cache {
-	int dummy;
-};
-
-struct mb_cache_entry {
-	u64 e_value;
-	unsigned long e_flags;
-};
-
-/* MB cache flags */
-#define MBE_REUSABLE_B	0
-
-#define mb_cache_create(bits)			kzalloc(sizeof(struct mb_cache), GFP_KERNEL)
-#define mb_cache_destroy(cache)			do { kfree(cache); } while (0)
-#define mb_cache_entry_find_first(c, h)		((struct mb_cache_entry *)NULL)
-#define mb_cache_entry_find_next(c, e)		((struct mb_cache_entry *)NULL)
-#define mb_cache_entry_delete_or_get(c, k, v)	((struct mb_cache_entry *)NULL)
-#define mb_cache_entry_get(c, k, v)		((struct mb_cache_entry *)NULL)
-#define mb_cache_entry_put(c, e)		do { (void)(c); (void)(e); } while (0)
-#define mb_cache_entry_create(c, f, k, v, r)	({ (void)(c); (void)(f); (void)(k); (void)(v); (void)(r); 0; })
-#define mb_cache_entry_delete(c, k, v)		do { (void)(c); (void)(k); (void)(v); } while (0)
-#define mb_cache_entry_touch(c, e)		do { (void)(c); (void)(e); } while (0)
-#define mb_cache_entry_wait_unused(e)		do { (void)(e); } while (0)
+/* mb_cache - use linux/mbcache.h */
+#include <linux/mbcache.h>
 
 /* xattr helper stubs for xattr.c */
 #define xattr_handler_can_list(h, d)		({ (void)(h); (void)(d); 0; })
diff --git a/include/linux/mbcache.h b/include/linux/mbcache.h
new file mode 100644
index 00000000000..b2383891211
--- /dev/null
+++ b/include/linux/mbcache.h
@@ -0,0 +1,60 @@ 
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * Metadata block cache definitions for U-Boot
+ *
+ * Based on Linux mbcache.h - cache for filesystem metadata blocks.
+ * U-Boot stubs - metadata caching is not supported.
+ */
+#ifndef _LINUX_MBCACHE_H
+#define _LINUX_MBCACHE_H
+
+#include <linux/types.h>
+#include <linux/slab.h>
+
+/**
+ * struct mb_cache - metadata block cache
+ *
+ * U-Boot stub - caching not supported.
+ */
+struct mb_cache {
+	int dummy;
+};
+
+/**
+ * struct mb_cache_entry - cache entry
+ * @e_value: cached value
+ * @e_flags: entry flags
+ */
+struct mb_cache_entry {
+	u64 e_value;
+	unsigned long e_flags;
+};
+
+/* MB cache flags */
+#define MBE_REUSABLE_B	0
+
+/* MB cache operations - all stubbed as no-ops */
+#define mb_cache_create(bits) \
+	kzalloc(sizeof(struct mb_cache), GFP_KERNEL)
+#define mb_cache_destroy(cache) \
+	do { kfree(cache); } while (0)
+#define mb_cache_entry_find_first(c, h) \
+	((struct mb_cache_entry *)NULL)
+#define mb_cache_entry_find_next(c, e) \
+	((struct mb_cache_entry *)NULL)
+#define mb_cache_entry_delete_or_get(c, k, v) \
+	((struct mb_cache_entry *)NULL)
+#define mb_cache_entry_get(c, k, v) \
+	((struct mb_cache_entry *)NULL)
+#define mb_cache_entry_put(c, e) \
+	do { (void)(c); (void)(e); } while (0)
+#define mb_cache_entry_create(c, f, k, v, r) \
+	({ (void)(c); (void)(f); (void)(k); (void)(v); (void)(r); 0; })
+#define mb_cache_entry_delete(c, k, v) \
+	do { (void)(c); (void)(k); (void)(v); } while (0)
+#define mb_cache_entry_touch(c, e) \
+	do { (void)(c); (void)(e); } while (0)
+#define mb_cache_entry_wait_unused(e) \
+	do { (void)(e); } while (0)
+
+#endif /* _LINUX_MBCACHE_H */