};
/* without gss, ptlrpc_body is put at the first buffer. */
+#define PTLRPC_NUM_VERSIONS 4
struct ptlrpc_body {
struct lustre_handle pb_handle;
__u32 pb_type;
__u32 pb_service_time; /* for rep, actual service time */
__u32 pb_limit;
__u64 pb_slv;
+ /* VBR: pre-versions */
+ __u64 pb_pre_versions[PTLRPC_NUM_VERSIONS];
+ /* padding for future needs */
+ __u64 pb_padding[4];
};
extern void lustre_swab_ptlrpc_body(struct ptlrpc_body *pb);
* This was used in early prototypes of adaptive timeouts, and while there
* shouldn't be any users of that code there also isn't a need for using this
* bits. Defer usage until at least 1.10 to avoid potential conflict. */
-#define MSG_REQ_REPLAY_DONE 0x0010
-#define MSG_LOCK_REPLAY_DONE 0x0020
+#define MSG_DELAY_REPLAY 0x0010
+#define MSG_VERSION_REPLAY 0x0020
+#define MSG_REQ_REPLAY_DONE 0x0040
+#define MSG_LOCK_REPLAY_DONE 0x0080
/*
* Flags for all connect opcodes (MDS_CONNECT, OST_CONNECT)
__swab32s (&b->pb_service_time);
__swab32s (&b->pb_limit);
__swab64s (&b->pb_slv);
+ __swab64s (&b->pb_pre_versions[0]);
+ __swab64s (&b->pb_pre_versions[1]);
+ __swab64s (&b->pb_pre_versions[2]);
+ __swab64s (&b->pb_pre_versions[3]);
+ CLASSERT(offsetof(typeof(*b), pb_padding) != 0);
}
void lustre_swab_connect(struct obd_connect_data *ocd)
(long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_buflens[0]));
/* Checks for struct ptlrpc_body */
- LASSERTF((int)sizeof(struct ptlrpc_body) == 88, " found %lld\n",
+ LASSERTF((int)sizeof(struct ptlrpc_body) == 152, " found %lld\n",
(long long)(int)sizeof(struct ptlrpc_body));
LASSERTF((int)offsetof(struct ptlrpc_body, pb_handle) == 0, " found %lld\n",
(long long)(int)offsetof(struct ptlrpc_body, pb_handle));
(long long)(int)offsetof(struct ptlrpc_body, pb_service_time));
LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_service_time) == 4, " found %lld\n",
(long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_service_time));
- LASSERTF((int)offsetof(struct ptlrpc_body, pb_slv) == 80, " found %lld\n",
- (long long)(int)offsetof(struct ptlrpc_body, pb_slv));
- LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_slv) == 8, " found %lld\n",
- (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_slv));
LASSERTF((int)offsetof(struct ptlrpc_body, pb_limit) == 76, " found %lld\n",
(long long)(int)offsetof(struct ptlrpc_body, pb_limit));
LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_limit) == 4, " found %lld\n",
(long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_limit));
+ LASSERTF((int)offsetof(struct ptlrpc_body, pb_slv) == 80, " found %lld\n",
+ (long long)(int)offsetof(struct ptlrpc_body, pb_slv));
+ LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_slv) == 8, " found %lld\n",
+ (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_slv));
+ LASSERTF((int)offsetof(struct ptlrpc_body, pb_pre_versions) == 88, " found %lld\n",
+ (long long)(int)offsetof(struct ptlrpc_body, pb_pre_versions));
+ LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_pre_versions) == 32, " found %lld\n",
+ (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_pre_versions));
+ LASSERTF((int)offsetof(struct ptlrpc_body, pb_padding) == 120, " found %lld\n",
+ (long long)(int)offsetof(struct ptlrpc_body, pb_padding));
+ LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_padding) == 32, " found %lld\n",
+ (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_padding));
+
/* Checks for struct obd_connect_data */
LASSERTF((int)sizeof(struct obd_connect_data) == 72, " found %lld\n",
(long long)(int)sizeof(((struct lustre_msg_v2 *)0)->lm_buflens[0]));
/* Checks for struct ptlrpc_body */
- LASSERTF((int)sizeof(struct ptlrpc_body) == 88, " found %lld\n",
+ LASSERTF((int)sizeof(struct ptlrpc_body) == 152, " found %lld\n",
(long long)(int)sizeof(struct ptlrpc_body));
LASSERTF((int)offsetof(struct ptlrpc_body, pb_handle) == 0, " found %lld\n",
(long long)(int)offsetof(struct ptlrpc_body, pb_handle));
(long long)(int)offsetof(struct ptlrpc_body, pb_service_time));
LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_service_time) == 4, " found %lld\n",
(long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_service_time));
- LASSERTF((int)offsetof(struct ptlrpc_body, pb_slv) == 80, " found %lld\n",
- (long long)(int)offsetof(struct ptlrpc_body, pb_slv));
- LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_slv) == 8, " found %lld\n",
- (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_slv));
LASSERTF((int)offsetof(struct ptlrpc_body, pb_limit) == 76, " found %lld\n",
(long long)(int)offsetof(struct ptlrpc_body, pb_limit));
LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_limit) == 4, " found %lld\n",
(long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_limit));
+ LASSERTF((int)offsetof(struct ptlrpc_body, pb_slv) == 80, " found %lld\n",
+ (long long)(int)offsetof(struct ptlrpc_body, pb_slv));
+ LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_slv) == 8, " found %lld\n",
+ (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_slv));
+ LASSERTF((int)offsetof(struct ptlrpc_body, pb_pre_versions) == 88, " found %lld\n",
+ (long long)(int)offsetof(struct ptlrpc_body, pb_pre_versions));
+ LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_pre_versions) == 32, " found %lld\n",
+ (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_pre_versions));
+ LASSERTF((int)offsetof(struct ptlrpc_body, pb_padding) == 120, " found %lld\n",
+ (long long)(int)offsetof(struct ptlrpc_body, pb_padding));
+ LASSERTF((int)sizeof(((struct ptlrpc_body *)0)->pb_padding) == 32, " found %lld\n",
+ (long long)(int)sizeof(((struct ptlrpc_body *)0)->pb_padding));
/* Checks for struct obd_connect_data */
LASSERTF((int)sizeof(struct obd_connect_data) == 72, " found %lld\n",