[PATCH v2 15/18] fs/ceph/super: move `ceph_cap.caps_item` into the union
From: Max Kellermann
Date: Mon Jul 06 2026 - 04:13:46 EST
The `caps_item` field is only used if the `ceph_cap` object is
"reserved", i.e. when it is in the `ceph_mds_client.caps_list` list
(but is otherwise uninitialized).
This reduces the size of the struct by 16 bytes.
Signed-off-by: Max Kellermann <max.kellermann@xxxxxxxxx>
---
fs/ceph/super.h | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/fs/ceph/super.h b/fs/ceph/super.h
index abe403eff0bb..afe681a47f71 100644
--- a/fs/ceph/super.h
+++ b/fs/ceph/super.h
@@ -208,6 +208,14 @@ struct ceph_cap {
struct list_head session_caps; /* per-session caplist */
u64 cap_id; /* unique cap id (mds provided) */
union {
+ /* reserved caps */
+ struct {
+ /**
+ * For the `ceph_mds_client.caps_list` list.
+ * Protected by `caps_list_lock`.
+ */
+ struct list_head caps_item;
+ };
/* in-use caps */
struct {
int issued; /* latest, from the mds */
@@ -224,7 +232,6 @@ struct ceph_cap {
};
u32 seq, issue_seq, mseq;
u32 cap_gen; /* active/stale cycle */
- struct list_head caps_item;
};
#define CHECK_CAPS_AUTHONLY 1 /* only check auth cap */
--
2.47.3