From 64f1f3bd363a93197dba3c6281306b27f122b198 Mon Sep 17 00:00:00 2001 From: eeb Date: Fri, 23 May 2003 22:04:07 +0000 Subject: [PATCH] * Added portals + lustre wire constant and struct size/offset assertions * Added portals + lustre wirecheck programs to generate these assertions on the reference platform. --- lnet/include/lnet/lib-lnet.h | 1 + lnet/include/lnet/lib-p30.h | 1 + lnet/lnet/lib-init.c | 2 + lnet/lnet/lib-move.c | 91 +++++ lnet/utils/.cvsignore | 1 + lnet/utils/Makefile.am | 4 +- lnet/utils/wirecheck.c | 157 +++++++++ lustre/portals/include/portals/lib-p30.h | 1 + lustre/portals/portals/lib-init.c | 2 + lustre/portals/portals/lib-move.c | 91 +++++ lustre/portals/utils/.cvsignore | 1 + lustre/portals/utils/Makefile.am | 4 +- lustre/portals/utils/wirecheck.c | 157 +++++++++ lustre/utils/wirecheck.c | 588 +++++++++++++++++++++++++++++++ 14 files changed, 1099 insertions(+), 2 deletions(-) create mode 100644 lnet/utils/wirecheck.c create mode 100644 lustre/portals/utils/wirecheck.c create mode 100644 lustre/utils/wirecheck.c diff --git a/lnet/include/lnet/lib-lnet.h b/lnet/include/lnet/lib-lnet.h index b70e128..4a61e76 100644 --- a/lnet/include/lnet/lib-lnet.h +++ b/lnet/include/lnet/lib-lnet.h @@ -370,6 +370,7 @@ extern void lib_copy_buf2iov (int niov, struct iovec *iov, char *dest, ptl_size_ extern ptl_size_t lib_kiov_nob (int niov, ptl_kiov_t *iov); extern void lib_copy_kiov2buf (char *dest, int niov, ptl_kiov_t *iov, ptl_size_t len); extern void lib_copy_buf2kiov (int niov, ptl_kiov_t *iov, char *src, ptl_size_t len); +extern void lib_assert_wire_constants (void); extern void lib_recv (nal_cb_t *nal, void *private, lib_msg_t *msg, lib_md_t *md, ptl_size_t offset, ptl_size_t mlen, ptl_size_t rlen); diff --git a/lnet/include/lnet/lib-p30.h b/lnet/include/lnet/lib-p30.h index b70e128..4a61e76 100644 --- a/lnet/include/lnet/lib-p30.h +++ b/lnet/include/lnet/lib-p30.h @@ -370,6 +370,7 @@ extern void lib_copy_buf2iov (int niov, struct iovec *iov, char *dest, ptl_size_ extern ptl_size_t lib_kiov_nob (int niov, ptl_kiov_t *iov); extern void lib_copy_kiov2buf (char *dest, int niov, ptl_kiov_t *iov, ptl_size_t len); extern void lib_copy_buf2kiov (int niov, ptl_kiov_t *iov, char *src, ptl_size_t len); +extern void lib_assert_wire_constants (void); extern void lib_recv (nal_cb_t *nal, void *private, lib_msg_t *msg, lib_md_t *md, ptl_size_t offset, ptl_size_t mlen, ptl_size_t rlen); diff --git a/lnet/lnet/lib-init.c b/lnet/lnet/lib-init.c index d6315c6..99c4d32 100644 --- a/lnet/lnet/lib-init.c +++ b/lnet/lnet/lib-init.c @@ -357,6 +357,8 @@ lib_init(nal_cb_t * nal, ptl_nid_t nid, ptl_pid_t pid, int gsize, goto out; } + lib_assert_wire_constants (); + /* * Allocate the portal table for this interface * and all per-interface objects. diff --git a/lnet/lnet/lib-move.c b/lnet/lnet/lib-move.c index a04e961..7bc6aa5 100644 --- a/lnet/lnet/lib-move.c +++ b/lnet/lnet/lib-move.c @@ -1285,3 +1285,94 @@ int do_PtlGet(nal_cb_t * nal, void *private, void *v_args, void *v_ret) return ret->rc = PTL_OK; } + +void lib_assert_wire_constants (void) +{ + /* Wire protocol assertions generated by 'wirecheck' */ + + /* Constants... */ + LASSERT (PORTALS_PROTO_MAGIC == 0xeebc0ded); + LASSERT (PORTALS_PROTO_VERSION_MAJOR == 0); + LASSERT (PORTALS_PROTO_VERSION_MINOR == 1); + LASSERT (PTL_MSG_ACK == 0); + LASSERT (PTL_MSG_PUT == 1); + LASSERT (PTL_MSG_GET == 2); + LASSERT (PTL_MSG_REPLY == 3); + LASSERT (PTL_MSG_HELLO == 4); + /* Checks for struct ptl_handle_wire_t */ + LASSERT (sizeof (ptl_handle_wire_t) == 16); + LASSERT (offsetof (ptl_handle_wire_t, wh_interface_cookie) == 0); + LASSERT (sizeof (((ptl_handle_wire_t *)0)->wh_interface_cookie) == 8); + LASSERT (offsetof (ptl_handle_wire_t, wh_object_cookie) == 8); + LASSERT (sizeof (((ptl_handle_wire_t *)0)->wh_object_cookie) == 8); + /* Checks for struct ptl_ack_t */ + LASSERT (sizeof (ptl_ack_t) == 32); + LASSERT (offsetof (ptl_ack_t, mlength) == 0); + LASSERT (sizeof (((ptl_ack_t *)0)->mlength) == 4); + LASSERT (offsetof (ptl_ack_t, dst_wmd) == 4); + LASSERT (sizeof (((ptl_ack_t *)0)->dst_wmd) == 16); + LASSERT (offsetof (ptl_ack_t, match_bits) == 20); + LASSERT (sizeof (((ptl_ack_t *)0)->match_bits) == 8); + LASSERT (offsetof (ptl_ack_t, length) == 28); + LASSERT (sizeof (((ptl_ack_t *)0)->length) == 4); + /* Checks for struct ptl_put_t */ + LASSERT (sizeof (ptl_put_t) == 44); + LASSERT (offsetof (ptl_put_t, ptl_index) == 0); + LASSERT (sizeof (((ptl_put_t *)0)->ptl_index) == 4); + LASSERT (offsetof (ptl_put_t, ack_wmd) == 4); + LASSERT (sizeof (((ptl_put_t *)0)->ack_wmd) == 16); + LASSERT (offsetof (ptl_put_t, match_bits) == 20); + LASSERT (sizeof (((ptl_put_t *)0)->match_bits) == 8); + LASSERT (offsetof (ptl_put_t, length) == 28); + LASSERT (sizeof (((ptl_put_t *)0)->length) == 4); + LASSERT (offsetof (ptl_put_t, offset) == 32); + LASSERT (sizeof (((ptl_put_t *)0)->offset) == 4); + LASSERT (offsetof (ptl_put_t, hdr_data) == 36); + LASSERT (sizeof (((ptl_put_t *)0)->hdr_data) == 8); + /* Checks for struct ptl_get_t */ + LASSERT (sizeof (ptl_get_t) == 44); + LASSERT (offsetof (ptl_get_t, ptl_index) == 0); + LASSERT (sizeof (((ptl_get_t *)0)->ptl_index) == 4); + LASSERT (offsetof (ptl_get_t, return_wmd) == 4); + LASSERT (sizeof (((ptl_get_t *)0)->return_wmd) == 16); + LASSERT (offsetof (ptl_get_t, match_bits) == 20); + LASSERT (sizeof (((ptl_get_t *)0)->match_bits) == 8); + LASSERT (offsetof (ptl_get_t, length) == 28); + LASSERT (sizeof (((ptl_get_t *)0)->length) == 4); + LASSERT (offsetof (ptl_get_t, src_offset) == 32); + LASSERT (sizeof (((ptl_get_t *)0)->src_offset) == 4); + LASSERT (offsetof (ptl_get_t, return_offset) == 36); + LASSERT (sizeof (((ptl_get_t *)0)->return_offset) == 4); + LASSERT (offsetof (ptl_get_t, sink_length) == 40); + LASSERT (sizeof (((ptl_get_t *)0)->sink_length) == 4); + /* Checks for struct ptl_reply_t */ + LASSERT (sizeof (ptl_reply_t) == 32); + LASSERT (offsetof (ptl_reply_t, dst_wmd) == 4); + LASSERT (sizeof (((ptl_reply_t *)0)->dst_wmd) == 16); + LASSERT (offsetof (ptl_reply_t, dst_offset) == 20); + LASSERT (sizeof (((ptl_reply_t *)0)->dst_offset) == 4); + LASSERT (offsetof (ptl_reply_t, length) == 28); + LASSERT (sizeof (((ptl_reply_t *)0)->length) == 4); + /* Checks for struct ptl_hdr_t */ + LASSERT (sizeof (ptl_hdr_t) == 72); + LASSERT (offsetof (ptl_hdr_t, dest_nid) == 0); + LASSERT (sizeof (((ptl_hdr_t *)0)->dest_nid) == 8); + LASSERT (offsetof (ptl_hdr_t, src_nid) == 8); + LASSERT (sizeof (((ptl_hdr_t *)0)->src_nid) == 8); + LASSERT (offsetof (ptl_hdr_t, dest_pid) == 16); + LASSERT (sizeof (((ptl_hdr_t *)0)->dest_pid) == 4); + LASSERT (offsetof (ptl_hdr_t, src_pid) == 20); + LASSERT (sizeof (((ptl_hdr_t *)0)->src_pid) == 4); + LASSERT (offsetof (ptl_hdr_t, type) == 24); + LASSERT (sizeof (((ptl_hdr_t *)0)->type) == 4); + LASSERT (offsetof (ptl_hdr_t, msg) == 28); + LASSERT (sizeof (((ptl_hdr_t *)0)->msg) == 44); + /* Checks for struct ptl_magicversion_t */ + LASSERT (sizeof (ptl_magicversion_t) == 8); + LASSERT (offsetof (ptl_magicversion_t, magic) == 0); + LASSERT (sizeof (((ptl_magicversion_t *)0)->magic) == 4); + LASSERT (offsetof (ptl_magicversion_t, version_major) == 4); + LASSERT (sizeof (((ptl_magicversion_t *)0)->version_major) == 2); + LASSERT (offsetof (ptl_magicversion_t, version_minor) == 6); + LASSERT (sizeof (((ptl_magicversion_t *)0)->version_minor) == 2); +} diff --git a/lnet/utils/.cvsignore b/lnet/utils/.cvsignore index 041cd6b..148310a 100644 --- a/lnet/utils/.cvsignore +++ b/lnet/utils/.cvsignore @@ -5,3 +5,4 @@ debugctl ptlctl .deps routerstat +wirecheck \ No newline at end of file diff --git a/lnet/utils/Makefile.am b/lnet/utils/Makefile.am index 065fcf9..05af598 100644 --- a/lnet/utils/Makefile.am +++ b/lnet/utils/Makefile.am @@ -7,11 +7,13 @@ COMPILE = gcc -Wall -g -I$(srcdir)/../include LINK = gcc -o $@ -sbin_PROGRAMS = acceptor ptlctl debugctl routerstat +sbin_PROGRAMS = acceptor ptlctl debugctl routerstat wirecheck lib_LIBRARIES = libptlctl.a acceptor_SOURCES = acceptor.c # -lefence +wirecheck_SOURCES = wirecheck.c + libptlctl_a_SOURCES = portals.c debug.c l_ioctl.c parser.c parser.h ptlctl_SOURCES = ptlctl.c diff --git a/lnet/utils/wirecheck.c b/lnet/utils/wirecheck.c new file mode 100644 index 0000000..ba420d4 --- /dev/null +++ b/lnet/utils/wirecheck.c @@ -0,0 +1,157 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + */ +#include +#include +#include +#include + +#define BLANK_LINE() \ +do { \ + printf ("\n"); \ +} while (0) + +#define COMMENT(c) \ +do { \ + printf (" /* "c" */\n"); \ +} while (0) + +#define STRINGIFY(a) #a + +#define CHECK_DEFINE(a) \ +do { \ + printf (" LASSERT ("#a" == "STRINGIFY(a)");\n"); \ +} while (0) + +#define CHECK_VALUE(a) \ +do { \ + printf (" LASSERT ("#a" == %d);\n", a); \ +} while (0) + +#define CHECK_MEMBER_OFFSET(s,m) \ +do { \ + CHECK_VALUE (offsetof (s, m)); \ +} while (0) + +#define CHECK_MEMBER_SIZEOF(s,m) \ +do { \ + CHECK_VALUE (sizeof (((s *)0)->m)); \ +} while (0) + +#define CHECK_MEMBER(s,m) \ +do { \ + CHECK_MEMBER_OFFSET (s, m); \ + CHECK_MEMBER_SIZEOF (s, m); \ +} while (0) + +#define CHECK_STRUCT(s) \ +do { \ + COMMENT ("Checks for struct "#s); \ + CHECK_VALUE (sizeof (s)); \ +} while (0) + +void +check_ptl_handle_wire (void) +{ + CHECK_STRUCT (ptl_handle_wire_t); + CHECK_MEMBER (ptl_handle_wire_t, wh_interface_cookie); + CHECK_MEMBER (ptl_handle_wire_t, wh_object_cookie); +} + +void +check_ptl_ack (void) +{ + CHECK_STRUCT (ptl_ack_t); + CHECK_MEMBER (ptl_ack_t, mlength); + CHECK_MEMBER (ptl_ack_t, dst_wmd); + CHECK_MEMBER (ptl_ack_t, match_bits); + CHECK_MEMBER (ptl_ack_t, length); +} + +void +check_ptl_put (void) +{ + CHECK_STRUCT (ptl_put_t); + CHECK_MEMBER (ptl_put_t, ptl_index); + CHECK_MEMBER (ptl_put_t, ack_wmd); + CHECK_MEMBER (ptl_put_t, match_bits); + CHECK_MEMBER (ptl_put_t, length); + CHECK_MEMBER (ptl_put_t, offset); + CHECK_MEMBER (ptl_put_t, hdr_data); +} + +void +check_ptl_get (void) +{ + CHECK_STRUCT (ptl_get_t); + CHECK_MEMBER (ptl_get_t, ptl_index); + CHECK_MEMBER (ptl_get_t, return_wmd); + CHECK_MEMBER (ptl_get_t, match_bits); + CHECK_MEMBER (ptl_get_t, length); + CHECK_MEMBER (ptl_get_t, src_offset); + CHECK_MEMBER (ptl_get_t, return_offset); + CHECK_MEMBER (ptl_get_t, sink_length); +} + +void +check_ptl_reply (void) +{ + CHECK_STRUCT (ptl_reply_t); + CHECK_MEMBER (ptl_reply_t, dst_wmd); + CHECK_MEMBER (ptl_reply_t, dst_offset); + CHECK_MEMBER (ptl_reply_t, length); +} + +void +check_ptl_hdr (void) +{ + CHECK_STRUCT (ptl_hdr_t); + CHECK_MEMBER (ptl_hdr_t, dest_nid); + CHECK_MEMBER (ptl_hdr_t, src_nid); + CHECK_MEMBER (ptl_hdr_t, dest_pid); + CHECK_MEMBER (ptl_hdr_t, src_pid); + CHECK_MEMBER (ptl_hdr_t, type); + CHECK_MEMBER (ptl_hdr_t, msg); +} + +void +check_ptl_magicversion (void) +{ + CHECK_STRUCT (ptl_magicversion_t); + CHECK_MEMBER (ptl_magicversion_t, magic); + CHECK_MEMBER (ptl_magicversion_t, version_major); + CHECK_MEMBER (ptl_magicversion_t, version_minor); +} + +int +main (int argc, char **argv) +{ + printf ("void lib_assert_wire_constants (void)\n" + "{\n"); + + COMMENT ("Wire protocol assertions generated by 'wirecheck'"); + BLANK_LINE (); + + COMMENT ("Constants..."); + CHECK_DEFINE (PORTALS_PROTO_MAGIC); + CHECK_DEFINE (PORTALS_PROTO_VERSION_MAJOR); + CHECK_DEFINE (PORTALS_PROTO_VERSION_MINOR); + + CHECK_VALUE (PTL_MSG_ACK); + CHECK_VALUE (PTL_MSG_PUT); + CHECK_VALUE (PTL_MSG_GET); + CHECK_VALUE (PTL_MSG_REPLY); + CHECK_VALUE (PTL_MSG_HELLO); + + check_ptl_handle_wire (); + check_ptl_ack (); + check_ptl_put (); + check_ptl_get (); + check_ptl_reply (); + check_ptl_hdr (); + check_ptl_magicversion (); + + printf ("}\n\n"); + + return (0); +} diff --git a/lustre/portals/include/portals/lib-p30.h b/lustre/portals/include/portals/lib-p30.h index b70e128..4a61e76 100644 --- a/lustre/portals/include/portals/lib-p30.h +++ b/lustre/portals/include/portals/lib-p30.h @@ -370,6 +370,7 @@ extern void lib_copy_buf2iov (int niov, struct iovec *iov, char *dest, ptl_size_ extern ptl_size_t lib_kiov_nob (int niov, ptl_kiov_t *iov); extern void lib_copy_kiov2buf (char *dest, int niov, ptl_kiov_t *iov, ptl_size_t len); extern void lib_copy_buf2kiov (int niov, ptl_kiov_t *iov, char *src, ptl_size_t len); +extern void lib_assert_wire_constants (void); extern void lib_recv (nal_cb_t *nal, void *private, lib_msg_t *msg, lib_md_t *md, ptl_size_t offset, ptl_size_t mlen, ptl_size_t rlen); diff --git a/lustre/portals/portals/lib-init.c b/lustre/portals/portals/lib-init.c index d6315c6..99c4d32 100644 --- a/lustre/portals/portals/lib-init.c +++ b/lustre/portals/portals/lib-init.c @@ -357,6 +357,8 @@ lib_init(nal_cb_t * nal, ptl_nid_t nid, ptl_pid_t pid, int gsize, goto out; } + lib_assert_wire_constants (); + /* * Allocate the portal table for this interface * and all per-interface objects. diff --git a/lustre/portals/portals/lib-move.c b/lustre/portals/portals/lib-move.c index a04e961..7bc6aa5 100644 --- a/lustre/portals/portals/lib-move.c +++ b/lustre/portals/portals/lib-move.c @@ -1285,3 +1285,94 @@ int do_PtlGet(nal_cb_t * nal, void *private, void *v_args, void *v_ret) return ret->rc = PTL_OK; } + +void lib_assert_wire_constants (void) +{ + /* Wire protocol assertions generated by 'wirecheck' */ + + /* Constants... */ + LASSERT (PORTALS_PROTO_MAGIC == 0xeebc0ded); + LASSERT (PORTALS_PROTO_VERSION_MAJOR == 0); + LASSERT (PORTALS_PROTO_VERSION_MINOR == 1); + LASSERT (PTL_MSG_ACK == 0); + LASSERT (PTL_MSG_PUT == 1); + LASSERT (PTL_MSG_GET == 2); + LASSERT (PTL_MSG_REPLY == 3); + LASSERT (PTL_MSG_HELLO == 4); + /* Checks for struct ptl_handle_wire_t */ + LASSERT (sizeof (ptl_handle_wire_t) == 16); + LASSERT (offsetof (ptl_handle_wire_t, wh_interface_cookie) == 0); + LASSERT (sizeof (((ptl_handle_wire_t *)0)->wh_interface_cookie) == 8); + LASSERT (offsetof (ptl_handle_wire_t, wh_object_cookie) == 8); + LASSERT (sizeof (((ptl_handle_wire_t *)0)->wh_object_cookie) == 8); + /* Checks for struct ptl_ack_t */ + LASSERT (sizeof (ptl_ack_t) == 32); + LASSERT (offsetof (ptl_ack_t, mlength) == 0); + LASSERT (sizeof (((ptl_ack_t *)0)->mlength) == 4); + LASSERT (offsetof (ptl_ack_t, dst_wmd) == 4); + LASSERT (sizeof (((ptl_ack_t *)0)->dst_wmd) == 16); + LASSERT (offsetof (ptl_ack_t, match_bits) == 20); + LASSERT (sizeof (((ptl_ack_t *)0)->match_bits) == 8); + LASSERT (offsetof (ptl_ack_t, length) == 28); + LASSERT (sizeof (((ptl_ack_t *)0)->length) == 4); + /* Checks for struct ptl_put_t */ + LASSERT (sizeof (ptl_put_t) == 44); + LASSERT (offsetof (ptl_put_t, ptl_index) == 0); + LASSERT (sizeof (((ptl_put_t *)0)->ptl_index) == 4); + LASSERT (offsetof (ptl_put_t, ack_wmd) == 4); + LASSERT (sizeof (((ptl_put_t *)0)->ack_wmd) == 16); + LASSERT (offsetof (ptl_put_t, match_bits) == 20); + LASSERT (sizeof (((ptl_put_t *)0)->match_bits) == 8); + LASSERT (offsetof (ptl_put_t, length) == 28); + LASSERT (sizeof (((ptl_put_t *)0)->length) == 4); + LASSERT (offsetof (ptl_put_t, offset) == 32); + LASSERT (sizeof (((ptl_put_t *)0)->offset) == 4); + LASSERT (offsetof (ptl_put_t, hdr_data) == 36); + LASSERT (sizeof (((ptl_put_t *)0)->hdr_data) == 8); + /* Checks for struct ptl_get_t */ + LASSERT (sizeof (ptl_get_t) == 44); + LASSERT (offsetof (ptl_get_t, ptl_index) == 0); + LASSERT (sizeof (((ptl_get_t *)0)->ptl_index) == 4); + LASSERT (offsetof (ptl_get_t, return_wmd) == 4); + LASSERT (sizeof (((ptl_get_t *)0)->return_wmd) == 16); + LASSERT (offsetof (ptl_get_t, match_bits) == 20); + LASSERT (sizeof (((ptl_get_t *)0)->match_bits) == 8); + LASSERT (offsetof (ptl_get_t, length) == 28); + LASSERT (sizeof (((ptl_get_t *)0)->length) == 4); + LASSERT (offsetof (ptl_get_t, src_offset) == 32); + LASSERT (sizeof (((ptl_get_t *)0)->src_offset) == 4); + LASSERT (offsetof (ptl_get_t, return_offset) == 36); + LASSERT (sizeof (((ptl_get_t *)0)->return_offset) == 4); + LASSERT (offsetof (ptl_get_t, sink_length) == 40); + LASSERT (sizeof (((ptl_get_t *)0)->sink_length) == 4); + /* Checks for struct ptl_reply_t */ + LASSERT (sizeof (ptl_reply_t) == 32); + LASSERT (offsetof (ptl_reply_t, dst_wmd) == 4); + LASSERT (sizeof (((ptl_reply_t *)0)->dst_wmd) == 16); + LASSERT (offsetof (ptl_reply_t, dst_offset) == 20); + LASSERT (sizeof (((ptl_reply_t *)0)->dst_offset) == 4); + LASSERT (offsetof (ptl_reply_t, length) == 28); + LASSERT (sizeof (((ptl_reply_t *)0)->length) == 4); + /* Checks for struct ptl_hdr_t */ + LASSERT (sizeof (ptl_hdr_t) == 72); + LASSERT (offsetof (ptl_hdr_t, dest_nid) == 0); + LASSERT (sizeof (((ptl_hdr_t *)0)->dest_nid) == 8); + LASSERT (offsetof (ptl_hdr_t, src_nid) == 8); + LASSERT (sizeof (((ptl_hdr_t *)0)->src_nid) == 8); + LASSERT (offsetof (ptl_hdr_t, dest_pid) == 16); + LASSERT (sizeof (((ptl_hdr_t *)0)->dest_pid) == 4); + LASSERT (offsetof (ptl_hdr_t, src_pid) == 20); + LASSERT (sizeof (((ptl_hdr_t *)0)->src_pid) == 4); + LASSERT (offsetof (ptl_hdr_t, type) == 24); + LASSERT (sizeof (((ptl_hdr_t *)0)->type) == 4); + LASSERT (offsetof (ptl_hdr_t, msg) == 28); + LASSERT (sizeof (((ptl_hdr_t *)0)->msg) == 44); + /* Checks for struct ptl_magicversion_t */ + LASSERT (sizeof (ptl_magicversion_t) == 8); + LASSERT (offsetof (ptl_magicversion_t, magic) == 0); + LASSERT (sizeof (((ptl_magicversion_t *)0)->magic) == 4); + LASSERT (offsetof (ptl_magicversion_t, version_major) == 4); + LASSERT (sizeof (((ptl_magicversion_t *)0)->version_major) == 2); + LASSERT (offsetof (ptl_magicversion_t, version_minor) == 6); + LASSERT (sizeof (((ptl_magicversion_t *)0)->version_minor) == 2); +} diff --git a/lustre/portals/utils/.cvsignore b/lustre/portals/utils/.cvsignore index 041cd6b..148310a 100644 --- a/lustre/portals/utils/.cvsignore +++ b/lustre/portals/utils/.cvsignore @@ -5,3 +5,4 @@ debugctl ptlctl .deps routerstat +wirecheck \ No newline at end of file diff --git a/lustre/portals/utils/Makefile.am b/lustre/portals/utils/Makefile.am index 065fcf9..05af598 100644 --- a/lustre/portals/utils/Makefile.am +++ b/lustre/portals/utils/Makefile.am @@ -7,11 +7,13 @@ COMPILE = gcc -Wall -g -I$(srcdir)/../include LINK = gcc -o $@ -sbin_PROGRAMS = acceptor ptlctl debugctl routerstat +sbin_PROGRAMS = acceptor ptlctl debugctl routerstat wirecheck lib_LIBRARIES = libptlctl.a acceptor_SOURCES = acceptor.c # -lefence +wirecheck_SOURCES = wirecheck.c + libptlctl_a_SOURCES = portals.c debug.c l_ioctl.c parser.c parser.h ptlctl_SOURCES = ptlctl.c diff --git a/lustre/portals/utils/wirecheck.c b/lustre/portals/utils/wirecheck.c new file mode 100644 index 0000000..ba420d4 --- /dev/null +++ b/lustre/portals/utils/wirecheck.c @@ -0,0 +1,157 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: + */ +#include +#include +#include +#include + +#define BLANK_LINE() \ +do { \ + printf ("\n"); \ +} while (0) + +#define COMMENT(c) \ +do { \ + printf (" /* "c" */\n"); \ +} while (0) + +#define STRINGIFY(a) #a + +#define CHECK_DEFINE(a) \ +do { \ + printf (" LASSERT ("#a" == "STRINGIFY(a)");\n"); \ +} while (0) + +#define CHECK_VALUE(a) \ +do { \ + printf (" LASSERT ("#a" == %d);\n", a); \ +} while (0) + +#define CHECK_MEMBER_OFFSET(s,m) \ +do { \ + CHECK_VALUE (offsetof (s, m)); \ +} while (0) + +#define CHECK_MEMBER_SIZEOF(s,m) \ +do { \ + CHECK_VALUE (sizeof (((s *)0)->m)); \ +} while (0) + +#define CHECK_MEMBER(s,m) \ +do { \ + CHECK_MEMBER_OFFSET (s, m); \ + CHECK_MEMBER_SIZEOF (s, m); \ +} while (0) + +#define CHECK_STRUCT(s) \ +do { \ + COMMENT ("Checks for struct "#s); \ + CHECK_VALUE (sizeof (s)); \ +} while (0) + +void +check_ptl_handle_wire (void) +{ + CHECK_STRUCT (ptl_handle_wire_t); + CHECK_MEMBER (ptl_handle_wire_t, wh_interface_cookie); + CHECK_MEMBER (ptl_handle_wire_t, wh_object_cookie); +} + +void +check_ptl_ack (void) +{ + CHECK_STRUCT (ptl_ack_t); + CHECK_MEMBER (ptl_ack_t, mlength); + CHECK_MEMBER (ptl_ack_t, dst_wmd); + CHECK_MEMBER (ptl_ack_t, match_bits); + CHECK_MEMBER (ptl_ack_t, length); +} + +void +check_ptl_put (void) +{ + CHECK_STRUCT (ptl_put_t); + CHECK_MEMBER (ptl_put_t, ptl_index); + CHECK_MEMBER (ptl_put_t, ack_wmd); + CHECK_MEMBER (ptl_put_t, match_bits); + CHECK_MEMBER (ptl_put_t, length); + CHECK_MEMBER (ptl_put_t, offset); + CHECK_MEMBER (ptl_put_t, hdr_data); +} + +void +check_ptl_get (void) +{ + CHECK_STRUCT (ptl_get_t); + CHECK_MEMBER (ptl_get_t, ptl_index); + CHECK_MEMBER (ptl_get_t, return_wmd); + CHECK_MEMBER (ptl_get_t, match_bits); + CHECK_MEMBER (ptl_get_t, length); + CHECK_MEMBER (ptl_get_t, src_offset); + CHECK_MEMBER (ptl_get_t, return_offset); + CHECK_MEMBER (ptl_get_t, sink_length); +} + +void +check_ptl_reply (void) +{ + CHECK_STRUCT (ptl_reply_t); + CHECK_MEMBER (ptl_reply_t, dst_wmd); + CHECK_MEMBER (ptl_reply_t, dst_offset); + CHECK_MEMBER (ptl_reply_t, length); +} + +void +check_ptl_hdr (void) +{ + CHECK_STRUCT (ptl_hdr_t); + CHECK_MEMBER (ptl_hdr_t, dest_nid); + CHECK_MEMBER (ptl_hdr_t, src_nid); + CHECK_MEMBER (ptl_hdr_t, dest_pid); + CHECK_MEMBER (ptl_hdr_t, src_pid); + CHECK_MEMBER (ptl_hdr_t, type); + CHECK_MEMBER (ptl_hdr_t, msg); +} + +void +check_ptl_magicversion (void) +{ + CHECK_STRUCT (ptl_magicversion_t); + CHECK_MEMBER (ptl_magicversion_t, magic); + CHECK_MEMBER (ptl_magicversion_t, version_major); + CHECK_MEMBER (ptl_magicversion_t, version_minor); +} + +int +main (int argc, char **argv) +{ + printf ("void lib_assert_wire_constants (void)\n" + "{\n"); + + COMMENT ("Wire protocol assertions generated by 'wirecheck'"); + BLANK_LINE (); + + COMMENT ("Constants..."); + CHECK_DEFINE (PORTALS_PROTO_MAGIC); + CHECK_DEFINE (PORTALS_PROTO_VERSION_MAJOR); + CHECK_DEFINE (PORTALS_PROTO_VERSION_MINOR); + + CHECK_VALUE (PTL_MSG_ACK); + CHECK_VALUE (PTL_MSG_PUT); + CHECK_VALUE (PTL_MSG_GET); + CHECK_VALUE (PTL_MSG_REPLY); + CHECK_VALUE (PTL_MSG_HELLO); + + check_ptl_handle_wire (); + check_ptl_ack (); + check_ptl_put (); + check_ptl_get (); + check_ptl_reply (); + check_ptl_hdr (); + check_ptl_magicversion (); + + printf ("}\n\n"); + + return (0); +} diff --git a/lustre/utils/wirecheck.c b/lustre/utils/wirecheck.c new file mode 100644 index 0000000..7f2c3d0 --- /dev/null +++ b/lustre/utils/wirecheck.c @@ -0,0 +1,588 @@ +#include +#include +#include +#include + +#define BLANK_LINE() \ +do { \ + printf ("\n"); \ +} while (0) + +#define COMMENT(c) \ +do { \ + printf (" /* "c" */\n"); \ +} while (0) + +#define STRINGIFY(a) #a + +#define CHECK_DEFINE(a) \ +do { \ + printf (" LASSERT ("#a" == "STRINGIFY(a)");\n"); \ +} while (0) + +#define CHECK_VALUE(a) \ +do { \ + printf (" LASSERT ("#a" == %d);\n", a); \ +} while (0) + +#define CHECK_MEMBER_OFFSET(s,m) \ +do { \ + CHECK_VALUE (offsetof (struct s, m)); \ +} while (0) + +#define CHECK_MEMBER_SIZEOF(s,m) \ +do { \ + CHECK_VALUE (sizeof (((struct s *)0)->m)); \ +} while (0) + +#define CHECK_MEMBER(s,m) \ +do { \ + CHECK_MEMBER_OFFSET (s, m); \ + CHECK_MEMBER_SIZEOF (s, m); \ +} while (0) + +#define CHECK_STRUCT(s) \ +do { \ + COMMENT ("Checks for struct "#s); \ + CHECK_VALUE (sizeof (struct s)); \ +} while (0) + + + +void check1 (void) +{ +#define VALUE 1234567 + + CHECK_VALUE (VALUE); + CHECK_DEFINE (VALUE); +} + +void +check_lustre_handle (void) +{ + BLANK_LINE (); + CHECK_STRUCT (lustre_handle); + CHECK_MEMBER (lustre_handle, cookie); +} + +void +check_lustre_msg (void) +{ + BLANK_LINE (); + CHECK_STRUCT (lustre_msg); + CHECK_MEMBER (lustre_msg, handle); + CHECK_MEMBER (lustre_msg, magic); + CHECK_MEMBER (lustre_msg, type); + CHECK_MEMBER (lustre_msg, version); + CHECK_MEMBER (lustre_msg, opc); + CHECK_MEMBER (lustre_msg, last_xid); + CHECK_MEMBER (lustre_msg, last_committed); + CHECK_MEMBER (lustre_msg, transno); + CHECK_MEMBER (lustre_msg, status); + CHECK_MEMBER (lustre_msg, flags); + CHECK_MEMBER (lustre_msg, bufcount); + CHECK_MEMBER (lustre_msg, buflens[7]); +} + +void +check_obdo (void) +{ + BLANK_LINE (); + CHECK_STRUCT (obdo); + CHECK_MEMBER (obdo, o_id); + CHECK_MEMBER (obdo, o_gr); + CHECK_MEMBER (obdo, o_atime); + CHECK_MEMBER (obdo, o_mtime); + CHECK_MEMBER (obdo, o_ctime); + CHECK_MEMBER (obdo, o_size); + CHECK_MEMBER (obdo, o_blocks); + CHECK_MEMBER (obdo, o_rdev); + CHECK_MEMBER (obdo, o_blksize); + CHECK_MEMBER (obdo, o_mode); + CHECK_MEMBER (obdo, o_uid); + CHECK_MEMBER (obdo, o_gid); + CHECK_MEMBER (obdo, o_flags); + CHECK_MEMBER (obdo, o_nlink); + CHECK_MEMBER (obdo, o_generation); + CHECK_MEMBER (obdo, o_valid); + CHECK_MEMBER (obdo, o_obdflags); + CHECK_MEMBER (obdo, o_easize); + CHECK_MEMBER (obdo, o_inline); +} + +void +check_obd_statfs (void) +{ + BLANK_LINE (); + CHECK_STRUCT (obd_statfs); + CHECK_MEMBER (obd_statfs, os_type); + CHECK_MEMBER (obd_statfs, os_blocks); + CHECK_MEMBER (obd_statfs, os_bfree); + CHECK_MEMBER (obd_statfs, os_bavail); + CHECK_MEMBER (obd_statfs, os_ffree); + CHECK_MEMBER (obd_statfs, os_fsid); + CHECK_MEMBER (obd_statfs, os_bsize); + CHECK_MEMBER (obd_statfs, os_namelen); +} + +void +check_obd_ioobj (void) +{ + BLANK_LINE (); + CHECK_STRUCT (obd_ioobj); + CHECK_MEMBER (obd_ioobj, ioo_id); + CHECK_MEMBER (obd_ioobj, ioo_gr); + CHECK_MEMBER (obd_ioobj, ioo_type); + CHECK_MEMBER (obd_ioobj, ioo_bufcnt); +} + +void +check_niobuf_remote (void) +{ + BLANK_LINE (); + CHECK_STRUCT (niobuf_remote); + CHECK_MEMBER (niobuf_remote, offset); + CHECK_MEMBER (niobuf_remote, len); + CHECK_MEMBER (niobuf_remote, flags); +} + +void +check_ost_body (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ost_body); + CHECK_MEMBER (ost_body, oa); +} + +void +check_ll_fid (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ll_fid); + CHECK_MEMBER (ll_fid, id); + CHECK_MEMBER (ll_fid, generation); + CHECK_MEMBER (ll_fid, f_type); +} + +void +check_mds_status_req (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_status_req); + CHECK_MEMBER (mds_status_req, flags); + CHECK_MEMBER (mds_status_req, repbuf); +} + +void +check_mds_fileh_body (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_fileh_body); + CHECK_MEMBER (mds_fileh_body, f_fid); +} + +void +check_mds_body (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_body); + CHECK_MEMBER (mds_body, fid1); + CHECK_MEMBER (mds_body, fid2); + CHECK_MEMBER (mds_body, handle); + CHECK_MEMBER (mds_body, size); + CHECK_MEMBER (mds_body, blocks); + CHECK_MEMBER (mds_body, ino); + CHECK_MEMBER (mds_body, valid); + CHECK_MEMBER (mds_body, fsuid); + CHECK_MEMBER (mds_body, fsgid); + CHECK_MEMBER (mds_body, capability); + CHECK_MEMBER (mds_body, mode); + CHECK_MEMBER (mds_body, uid); + CHECK_MEMBER (mds_body, gid); + CHECK_MEMBER (mds_body, mtime); + CHECK_MEMBER (mds_body, ctime); + CHECK_MEMBER (mds_body, atime); + CHECK_MEMBER (mds_body, flags); + CHECK_MEMBER (mds_body, rdev); + CHECK_MEMBER (mds_body, nlink); + CHECK_MEMBER (mds_body, generation); + CHECK_MEMBER (mds_body, suppgid); +} + +void +check_mds_rec_setattr (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_rec_setattr); + CHECK_MEMBER (mds_rec_setattr, sa_opcode); + CHECK_MEMBER (mds_rec_setattr, sa_fsuid); + CHECK_MEMBER (mds_rec_setattr, sa_fsgid); + CHECK_MEMBER (mds_rec_setattr, sa_cap); + CHECK_MEMBER (mds_rec_setattr, sa_reserved); + CHECK_MEMBER (mds_rec_setattr, sa_valid); + CHECK_MEMBER (mds_rec_setattr, sa_fid); + CHECK_MEMBER (mds_rec_setattr, sa_mode); + CHECK_MEMBER (mds_rec_setattr, sa_uid); + CHECK_MEMBER (mds_rec_setattr, sa_gid); + CHECK_MEMBER (mds_rec_setattr, sa_attr_flags); + CHECK_MEMBER (mds_rec_setattr, sa_size); + CHECK_MEMBER (mds_rec_setattr, sa_atime); + CHECK_MEMBER (mds_rec_setattr, sa_mtime); + CHECK_MEMBER (mds_rec_setattr, sa_ctime); + CHECK_MEMBER (mds_rec_setattr, sa_suppgid); +} + +void +check_mds_rec_create (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_rec_create); + CHECK_MEMBER (mds_rec_create, cr_opcode); + CHECK_MEMBER (mds_rec_create, cr_fsuid); + CHECK_MEMBER (mds_rec_create, cr_fsgid); + CHECK_MEMBER (mds_rec_create, cr_cap); + CHECK_MEMBER (mds_rec_create, cr_flags); + CHECK_MEMBER (mds_rec_create, cr_mode); + CHECK_MEMBER (mds_rec_create, cr_fid); + CHECK_MEMBER (mds_rec_create, cr_replayfid); + CHECK_MEMBER (mds_rec_create, cr_uid); + CHECK_MEMBER (mds_rec_create, cr_gid); + CHECK_MEMBER (mds_rec_create, cr_time); + CHECK_MEMBER (mds_rec_create, cr_rdev); + CHECK_MEMBER (mds_rec_create, cr_suppgid); +} + +void +check_mds_rec_link (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_rec_link); + CHECK_MEMBER (mds_rec_link, lk_opcode); + CHECK_MEMBER (mds_rec_link, lk_fsuid); + CHECK_MEMBER (mds_rec_link, lk_fsgid); + CHECK_MEMBER (mds_rec_link, lk_cap); + CHECK_MEMBER (mds_rec_link, lk_suppgid1); + CHECK_MEMBER (mds_rec_link, lk_suppgid2); + CHECK_MEMBER (mds_rec_link, lk_fid1); + CHECK_MEMBER (mds_rec_link, lk_fid2); +} + +void +check_mds_rec_unlink (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_rec_unlink); + CHECK_MEMBER (mds_rec_unlink, ul_opcode); + CHECK_MEMBER (mds_rec_unlink, ul_fsuid); + CHECK_MEMBER (mds_rec_unlink, ul_fsgid); + CHECK_MEMBER (mds_rec_unlink, ul_cap); + CHECK_MEMBER (mds_rec_unlink, ul_reserved); + CHECK_MEMBER (mds_rec_unlink, ul_mode); + CHECK_MEMBER (mds_rec_unlink, ul_suppgid); + CHECK_MEMBER (mds_rec_unlink, ul_fid1); + CHECK_MEMBER (mds_rec_unlink, ul_fid2); +} + +void +check_mds_rec_rename (void) +{ + BLANK_LINE (); + CHECK_STRUCT (mds_rec_rename); + CHECK_MEMBER (mds_rec_rename, rn_opcode); + CHECK_MEMBER (mds_rec_rename, rn_fsuid); + CHECK_MEMBER (mds_rec_rename, rn_fsgid); + CHECK_MEMBER (mds_rec_rename, rn_cap); + CHECK_MEMBER (mds_rec_rename, rn_suppgid1); + CHECK_MEMBER (mds_rec_rename, rn_suppgid2); + CHECK_MEMBER (mds_rec_rename, rn_fid1); + CHECK_MEMBER (mds_rec_rename, rn_fid2); +} + +void +check_lov_desc (void) +{ + BLANK_LINE (); + CHECK_STRUCT (lov_desc); + CHECK_MEMBER (lov_desc, ld_tgt_count); + CHECK_MEMBER (lov_desc, ld_active_tgt_count); + CHECK_MEMBER (lov_desc, ld_default_stripe_count); + CHECK_MEMBER (lov_desc, ld_default_stripe_size); + CHECK_MEMBER (lov_desc, ld_default_stripe_offset); + CHECK_MEMBER (lov_desc, ld_pattern); + CHECK_MEMBER (lov_desc, ld_uuid); +} + +void +check_ldlm_res_id (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ldlm_res_id); + CHECK_MEMBER (ldlm_res_id, name[RES_NAME_SIZE]); +} + +void +check_ldlm_extent (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ldlm_extent); + CHECK_MEMBER (ldlm_extent, start); + CHECK_MEMBER (ldlm_extent, end); +} + +void +check_ldlm_intent (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ldlm_intent); + CHECK_MEMBER (ldlm_intent, opc); +} + +void +check_ldlm_resource_desc (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ldlm_resource_desc); + CHECK_MEMBER (ldlm_resource_desc, lr_type); + CHECK_MEMBER (ldlm_resource_desc, lr_name); + CHECK_MEMBER (ldlm_resource_desc, lr_version[RES_VERSION_SIZE]); +} + +void +check_ldlm_lock_desc (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ldlm_lock_desc); + CHECK_MEMBER (ldlm_lock_desc, l_resource); + CHECK_MEMBER (ldlm_lock_desc, l_req_mode); + CHECK_MEMBER (ldlm_lock_desc, l_granted_mode); + CHECK_MEMBER (ldlm_lock_desc, l_extent); + CHECK_MEMBER (ldlm_lock_desc, l_version[RES_VERSION_SIZE]); +} + +void +check_ldlm_request (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ldlm_request); + CHECK_MEMBER (ldlm_request, lock_flags); + CHECK_MEMBER (ldlm_request, lock_desc); + CHECK_MEMBER (ldlm_request, lock_handle1); + CHECK_MEMBER (ldlm_request, lock_handle2); +} + +void +check_ldlm_reply (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ldlm_reply); + CHECK_MEMBER (ldlm_reply, lock_flags); + CHECK_MEMBER (ldlm_reply, lock_mode); + CHECK_MEMBER (ldlm_reply, lock_resource_name); + CHECK_MEMBER (ldlm_reply, lock_handle); + CHECK_MEMBER (ldlm_reply, lock_extent); + CHECK_MEMBER (ldlm_reply, lock_policy_res1); + CHECK_MEMBER (ldlm_reply, lock_policy_res2); +} + +void +check_ptlbd_op (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ptlbd_op); + CHECK_MEMBER (ptlbd_op, op_cmd); + CHECK_MEMBER (ptlbd_op, op_lun); + CHECK_MEMBER (ptlbd_op, op_niob_cnt); + CHECK_MEMBER (ptlbd_op, op__padding); + CHECK_MEMBER (ptlbd_op, op_block_cnt); +} + +void +check_ptlbd_niob (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ptlbd_niob); + CHECK_MEMBER (ptlbd_niob, n_xid); + CHECK_MEMBER (ptlbd_niob, n_block_nr); + CHECK_MEMBER (ptlbd_niob, n_offset); + CHECK_MEMBER (ptlbd_niob, n_length); +} + +void +check_ptlbd_rsp (void) +{ + BLANK_LINE (); + CHECK_STRUCT (ptlbd_rsp); + CHECK_MEMBER (ptlbd_rsp, r_status); + CHECK_MEMBER (ptlbd_rsp, r_error_cnt); +} + +int +main (int argc, char **argv) +{ + printf ("void lustre_assert_wire_constants (void)\n" + "{\n"); + + COMMENT ("Wire protocol assertions generated by 'wirecheck'"); + BLANK_LINE (); + + COMMENT ("Constants..."); + CHECK_DEFINE (PTLRPC_MSG_MAGIC); + CHECK_DEFINE (PTLRPC_MSG_VERSION); + + CHECK_VALUE (PTL_RPC_MSG_REQUEST); + CHECK_VALUE (PTL_RPC_MSG_ERR); + CHECK_VALUE (PTL_RPC_MSG_REPLY); + + CHECK_VALUE (MSG_LAST_REPLAY); + CHECK_VALUE (MSG_RESENT); + + CHECK_VALUE (MSG_CONNECT_RECOVERING); + CHECK_VALUE (MSG_CONNECT_RECONNECT); + CHECK_VALUE (MSG_CONNECT_REPLAYABLE); + + CHECK_VALUE (OST_REPLY); + CHECK_VALUE (OST_GETATTR); + CHECK_VALUE (OST_SETATTR); + CHECK_VALUE (OST_READ); + CHECK_VALUE (OST_WRITE); + CHECK_VALUE (OST_CREATE); + CHECK_VALUE (OST_DESTROY); + CHECK_VALUE (OST_GET_INFO); + CHECK_VALUE (OST_CONNECT); + CHECK_VALUE (OST_DISCONNECT); + CHECK_VALUE (OST_PUNCH); + CHECK_VALUE (OST_OPEN); + CHECK_VALUE (OST_CLOSE); + CHECK_VALUE (OST_STATFS); + CHECK_VALUE (OST_SAN_READ); + CHECK_VALUE (OST_SAN_WRITE); + CHECK_VALUE (OST_SYNCFS); + CHECK_VALUE (OST_LAST_OPC); + CHECK_VALUE (OST_FIRST_OPC); + + CHECK_VALUE (OBD_FL_INLINEDATA); + CHECK_VALUE (OBD_FL_OBDMDEXISTS); + + CHECK_VALUE (LOV_MAGIC); + + CHECK_VALUE (OBD_MD_FLALL); + CHECK_VALUE (OBD_MD_FLID); + CHECK_VALUE (OBD_MD_FLATIME); + CHECK_VALUE (OBD_MD_FLMTIME); + CHECK_VALUE (OBD_MD_FLCTIME); + CHECK_VALUE (OBD_MD_FLSIZE); + CHECK_VALUE (OBD_MD_FLBLOCKS); + CHECK_VALUE (OBD_MD_FLBLKSZ); + CHECK_VALUE (OBD_MD_FLMODE); + CHECK_VALUE (OBD_MD_FLTYPE); + CHECK_VALUE (OBD_MD_FLUID); + CHECK_VALUE (OBD_MD_FLGID); + CHECK_VALUE (OBD_MD_FLFLAGS); + CHECK_VALUE (OBD_MD_FLOBDFLG); + CHECK_VALUE (OBD_MD_FLNLINK); + CHECK_VALUE (OBD_MD_FLGENER); + CHECK_VALUE (OBD_MD_FLINLINE); + CHECK_VALUE (OBD_MD_FLRDEV); + CHECK_VALUE (OBD_MD_FLEASIZE); + CHECK_VALUE (OBD_MD_LINKNAME); + CHECK_VALUE (OBD_MD_FLHANDLE); + CHECK_VALUE (OBD_MD_FLCKSUM); + + CHECK_VALUE (OBD_BRW_READ); + CHECK_VALUE (OBD_BRW_WRITE); + CHECK_VALUE (OBD_BRW_CREATE); + CHECK_VALUE (OBD_BRW_SYNC); + + CHECK_DEFINE (OBD_OBJECT_EOF); + + CHECK_VALUE (OST_REQ_HAS_OA1); + + CHECK_VALUE (MDS_GETATTR); + CHECK_VALUE (MDS_GETATTR_NAME); + CHECK_VALUE (MDS_CLOSE); + CHECK_VALUE (MDS_REINT); + CHECK_VALUE (MDS_READPAGE); + CHECK_VALUE (MDS_CONNECT); + CHECK_VALUE (MDS_DISCONNECT); + CHECK_VALUE (MDS_GETSTATUS); + CHECK_VALUE (MDS_STATFS); + CHECK_VALUE (MDS_GETLOVINFO); + CHECK_VALUE (MDS_LAST_OPC); + CHECK_VALUE (MDS_FIRST_OPC); + + CHECK_VALUE (REINT_SETATTR); + CHECK_VALUE (REINT_CREATE); + CHECK_VALUE (REINT_LINK); + CHECK_VALUE (REINT_UNLINK); + CHECK_VALUE (REINT_RENAME); + CHECK_VALUE (REINT_OPEN); + CHECK_VALUE (REINT_MAX); + + CHECK_VALUE (IT_INTENT_EXEC); + CHECK_VALUE (IT_OPEN_LOOKUP); + CHECK_VALUE (IT_OPEN_NEG); + CHECK_VALUE (IT_OPEN_POS); + CHECK_VALUE (IT_OPEN_CREATE); + CHECK_VALUE (IT_OPEN_OPEN); + + CHECK_VALUE (MDS_STATUS_CONN); + CHECK_VALUE (MDS_STATUS_LOV); + + CHECK_VALUE (MDS_OPEN_HAS_EA); + + CHECK_VALUE (LOV_RAID0); + CHECK_VALUE (LOV_RAIDRR); + + CHECK_VALUE (LDLM_ENQUEUE); + CHECK_VALUE (LDLM_CONVERT); + CHECK_VALUE (LDLM_CANCEL); + CHECK_VALUE (LDLM_BL_CALLBACK); + CHECK_VALUE (LDLM_CP_CALLBACK); + CHECK_VALUE (LDLM_LAST_OPC); + CHECK_VALUE (LDLM_FIRST_OPC); + + CHECK_VALUE (PTLBD_QUERY); + CHECK_VALUE (PTLBD_READ); + CHECK_VALUE (PTLBD_WRITE); + CHECK_VALUE (PTLBD_FLUSH); + CHECK_VALUE (PTLBD_CONNECT); + CHECK_VALUE (PTLBD_DISCONNECT); + CHECK_VALUE (PTLBD_LAST_OPC); + CHECK_VALUE (PTLBD_FIRST_OPC); + + CHECK_VALUE (OBD_PING); + + COMMENT ("Sizes and Offsets"); + BLANK_LINE (); + check_lustre_handle (); + check_lustre_msg (); + check_obdo (); + check_obd_statfs (); + check_obd_ioobj (); + check_niobuf_remote (); + check_ost_body (); + check_ll_fid (); + check_mds_status_req (); + check_mds_fileh_body (); + check_mds_body (); + check_mds_rec_setattr (); + check_mds_rec_create (); + check_mds_rec_link (); + check_mds_rec_unlink (); + check_mds_rec_rename (); + check_lov_desc (); + check_ldlm_res_id (); + check_ldlm_extent (); + check_ldlm_intent (); + check_ldlm_resource_desc (); + check_ldlm_lock_desc (); + check_ldlm_request (); + check_ldlm_reply (); + check_ptlbd_op (); + check_ptlbd_niob (); + check_ptlbd_rsp (); + + printf ("}\n\n"); + + return (0); +} -- 1.8.3.1