__u64 lvb_blocks;
};
-extern void lustre_swab_ost_lvb(struct ost_lvb *);
-
/*
* MDS REQ RECORDS
*/
extern void lustre_swab_ldlm_policy_data (ldlm_wire_policy_data_t *d);
+/* Similarly to ldlm_wire_policy_data_t, there is one common swabber for all
+ * LVB types. As a result, any new LVB structure must match the fields of the
+ * ost_lvb structure. */
+union ldlm_wire_lvb {
+ struct ost_lvb l_ost;
+};
+
+extern void lustre_swab_lvb(union ldlm_wire_lvb *);
+
struct ldlm_intent {
__u64 opc;
};
EXPORT_SYMBOL(RMF_LDLM_INTENT);
struct req_msg_field RMF_DLM_LVB =
- DEFINE_MSGF("dlm_lvb", 0, sizeof(struct ost_lvb), lustre_swab_ost_lvb,
+ DEFINE_MSGF("dlm_lvb", 0, sizeof(union ldlm_wire_lvb), lustre_swab_lvb,
NULL);
EXPORT_SYMBOL(RMF_DLM_LVB);
__swab32s(val);
}
-void lustre_swab_ost_lvb(struct ost_lvb *lvb)
+void lustre_swab_lvb(union ldlm_wire_lvb *lvb)
{
- __swab64s(&lvb->lvb_size);
- __swab64s(&lvb->lvb_mtime);
- __swab64s(&lvb->lvb_atime);
- __swab64s(&lvb->lvb_ctime);
- __swab64s(&lvb->lvb_blocks);
+ /* The ldlm_wire_lvb union represents all the possible LVB types.
+ * Unfortunately, there is no way to know what member of the union we
+ * are dealing with at this point. Therefore, all LVB structures must
+ * have fields of the same types, although used for different purposes
+ */
+ __swab64s(&lvb->l_ost.lvb_size);
+ __swab64s(&lvb->l_ost.lvb_mtime);
+ __swab64s(&lvb->l_ost.lvb_atime);
+ __swab64s(&lvb->l_ost.lvb_ctime);
+ __swab64s(&lvb->l_ost.lvb_blocks);
}
void lustre_swab_mdt_body (struct mdt_body *b)
EXPORT_SYMBOL(lustre_swab_niobuf_remote);
EXPORT_SYMBOL(lustre_swab_ost_body);
EXPORT_SYMBOL(lustre_swab_ost_last_id);
-EXPORT_SYMBOL(lustre_swab_ost_lvb);
+EXPORT_SYMBOL(lustre_swab_lvb);
EXPORT_SYMBOL(lustre_swab_mdt_body);
EXPORT_SYMBOL(lustre_swab_mdt_ioepoch);
EXPORT_SYMBOL(lustre_swab_obd_quotactl);
#define lustre_swab_ost_last_id NULL
#define lustre_swab_fiemap NULL
#define lustre_swab_qdata NULL
-#define lustre_swab_ost_lvb NULL
+#define lustre_swab_lvb NULL
#define lustre_swab_mgs_config_body NULL
#define lustre_swab_mgs_config_res NULL
#define dump_rniobuf NULL