* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2017, Intel Corporation.
*/
#ifdef HAVE_CONFIG_H
#include <string.h>
#include <epan/packet.h>
+#include "wireshark-compat.h"
+
#include <epan/dissectors/packet-windows-common.h>
+#include "lustre_dlm_flags.h"
const true_false_string lnet_flags_set_truth = { "Set", "Unset" };
-#define LOV_MAGIC_V1 0x0BD10BD0
-#define LOV_MAGIC LOV_MAGIC_V1
-#define LOV_MAGIC_JOIN_V1 0x0BD20BD0
+#define LOV_MAGIC_V1 0x0BD10BD0
+#define LOV_MAGIC_V3 0x0BD30BD0
+
+/* defined in lustre/include/lustre/lustre_user.h */
+#define LOV_MAXPOOLNAME 15
/* defined in lustre/include/lustre/lustre_idl.h */
typedef enum {
OST_QUOTACHECK = 18,
OST_QUOTACTL = 19,
OST_QUOTA_ADJUST_QUNIT = 20,
+ OST_LADVISE = 21,
OST_LAST_OPC
} ost_cmd_t ;
* in lustre/include/lustre/lustre_idl.h
*/
typedef enum {
- MDS_GETATTR = 33,
- MDS_GETATTR_NAME = 34,
- MDS_CLOSE = 35,
- MDS_REINT = 36,
- MDS_READPAGE = 37,
- MDS_CONNECT = 38,
- MDS_DISCONNECT = 39,
- MDS_GETSTATUS = 40,
- MDS_STATFS = 41,
- MDS_PIN = 42,
- MDS_UNPIN = 43,
- MDS_SYNC = 44,
- MDS_DONE_WRITING = 45,
- MDS_SET_INFO = 46,
- MDS_QUOTACHECK = 47,
- MDS_QUOTACTL = 48,
- MDS_GETXATTR = 49,
- MDS_SETXATTR = 50,
- MDS_WRITEPAGE = 51,
- MDS_IS_SUBDIR = 52,
- MDS_GET_INFO = 53,
- MDS_LAST_OPC
+ MDS_GETATTR = 33,
+ MDS_GETATTR_NAME = 34,
+ MDS_CLOSE = 35,
+ MDS_REINT = 36,
+ MDS_READPAGE = 37,
+ MDS_CONNECT = 38,
+ MDS_DISCONNECT = 39,
+ MDS_GET_ROOT = 40,
+ MDS_STATFS = 41,
+ MDS_PIN = 42,
+ MDS_UNPIN = 43,
+ MDS_SYNC = 44,
+ MDS_DONE_WRITING = 45,
+ MDS_SET_INFO = 46,
+ MDS_QUOTACHECK = 47,
+ MDS_QUOTACTL = 48,
+ MDS_GETXATTR = 49,
+ MDS_SETXATTR = 50,
+ MDS_WRITEPAGE = 51,
+ MDS_IS_SUBDIR = 52,
+ MDS_GET_INFO = 53,
+ MDS_HSM_STATE_GET = 54,
+ MDS_HSM_STATE_SET = 55,
+ MDS_HSM_ACTION = 56,
+ MDS_HSM_PROGRESS = 57,
+ MDS_HSM_REQUEST = 58,
+ MDS_HSM_CT_REGISTER = 59,
+ MDS_HSM_CT_UNREGISTER = 60,
+ MDS_SWAP_LAYOUTS = 61,
+ MDS_LAST_OPC
} mds_cmd_t;
+#define MDS_FIRST_OPC MDS_GETATTR
+
+enum {
+ LAYOUT_INTENT_ACCESS = 0,
+ LAYOUT_INTENT_READ = 1,
+ LAYOUT_INTENT_WRITE = 2,
+ LAYOUT_INTENT_GLIMPSE = 3,
+ LAYOUT_INTENT_TRUNC = 4,
+ LAYOUT_INTENT_RELEASE = 5,
+ LAYOUT_INTENT_RESTORE = 6
+};
+
+static const value_string lustre_layout_intent_opc_values[] = {
+ { LAYOUT_INTENT_ACCESS, "ACCESS"},
+ { LAYOUT_INTENT_READ, "READ"},
+ { LAYOUT_INTENT_WRITE, "WRITE"},
+ { LAYOUT_INTENT_GLIMPSE, "GLIMPSE"},
+ { LAYOUT_INTENT_TRUNC, "TRUNC"},
+ { LAYOUT_INTENT_RELEASE, "RELEASE"},
+ { LAYOUT_INTENT_RESTORE, "RESTORE"},
+ { 0, NULL },
+};
+/* From lustre/include/obd.h */
#define IT_OPEN 0x0001
#define IT_CREAT 0x0002
#define IT_READDIR 0x0004
#define IT_GETATTR 0x0008
#define IT_LOOKUP 0x0010
#define IT_UNLINK 0x0020
-#define IT_GETXATTR 0x0040
-#define IT_EXEC 0x0080
-#define IT_PIN 0x0100
-
-
-
-#define MDS_FIRST_OPC MDS_GETATTR
-#define LDLM_FIRST_OPC LDLM_ENQUEUE
-
-typedef enum {
+#define IT_TRUNC 0x0040
+#define IT_GETXATTR 0x0080
+#define IT_EXEC 0x0100
+#define IT_PIN 0x0200
+#define IT_LAYOUT 0x0400
+#define IT_QUOTA_DQACQ 0x0800
+#define IT_QUOTA_CONN 0x1000
+#define IT_SETXATTR 0x2000
+
+/* lustre/include/uapi/linux/lustre/lustre_idl.h */
+enum mds_reint_op {
REINT_SETATTR = 1,
REINT_CREATE = 2,
REINT_LINK = 3,
REINT_RENAME = 5,
REINT_OPEN = 6,
REINT_SETXATTR = 7,
- // REINT_CLOSE = 8,
- // REINT_WRITE = 9,
+ REINT_RMENTRY = 8,
+ REINT_MIGRATE = 9,
REINT_MAX
-} mds_reint_t;
+};
-typedef enum {
+enum ldlm_cmd {
LDLM_ENQUEUE = 101,
LDLM_CONVERT = 102,
LDLM_CANCEL = 103,
LDLM_BL_CALLBACK = 104,
LDLM_CP_CALLBACK = 105,
LDLM_GL_CALLBACK = 106,
+ LDLM_SET_INFO = 107,
LDLM_LAST_OPC
-} ldlm_cmd_t;
+};
#define LDLM_FIRST_OPC LDLM_ENQUEUE
enum seq_rpc_opc {
FLD_FIRST_OPC = FLD_QUERY
};
-#define LDLM_FL_LOCK_CHANGED 0x000001
-#define LDLM_FL_BLOCK_GRANTED 0x000002
-#define LDLM_FL_BLOCK_CONV 0x000004
-#define LDLM_FL_BLOCK_WAIT 0x000008
-#define LDLM_FL_CBPENDING 0x000010
-#define LDLM_FL_AST_SENT 0x000020
-#define LDLM_FL_WAIT_NOREPROC 0x000040
-#define LDLM_FL_CANCEL 0x000080
-#define LDLM_FL_REPLAY 0x000100
-#define LDLM_FL_INTENT_ONLY 0x000200
-#define LDLM_FL_LOCAL_ONLY 0x000400
-#define LDLM_FL_FAILED 0x000800
-#define LDLM_FL_HAS_INTENT 0x001000
-#define LDLM_FL_CANCELING 0x002000
-#define LDLM_FL_LOCAL 0x004000
-#define LDLM_FL_WARN 0x008000
-#define LDLM_FL_DISCARD_DATA 0x010000
-#define LDLM_FL_NO_TIMEOUT 0x020000
-#define LDLM_FL_BLOCK_NOWAIT 0x040000
-#define LDLM_FL_TEST_LOCK 0x080000
-#define LDLM_FL_LVB_READY 0x100000
-#define LDLM_FL_KMS_IGNORE 0x200000
-#define LDLM_FL_NO_LRU 0x400000
-#define LDLM_FL_CANCEL_ON_BLOCK 0x800000
-#define LDLM_FL_CP_REQD 0x1000000
-#define LDLM_FL_CLEANED 0x2000000
-#define LDLM_FL_ATOMIC_CB 0x4000000
-#define LDLM_FL_BL_AST 0x10000000
-#define LDLM_FL_BL_DONE 0x20000000
-#define LDLM_FL_DENY_ON_CONTENTION 0x40000000
-#define LDLM_AST_DISCARD_DATA 0x80000000
-
-
#define LDLM_ENQUEUE (101)
#define LDLM_CONVERT (102)
#define LDLM_CANCEL (103)
#define PTL_RPC_MSG_ERR 4712
#define PTL_RPC_MSG_REPLY 4713
+/* Connect flags from lustre_idl.h */
+#define OBD_CONNECT_RDONLY 0x1ULL /*client has read-only access*/
+#define OBD_CONNECT_INDEX 0x2ULL /*connect specific LOV idx */
+#define OBD_CONNECT_MDS 0x4ULL /*connect from MDT to OST */
+#define OBD_CONNECT_GRANT 0x8ULL /*OSC gets grant at connect */
+#define OBD_CONNECT_SRVLOCK 0x10ULL /*server takes locks for cli */
+#define OBD_CONNECT_VERSION 0x20ULL /*Lustre versions in ocd */
+#define OBD_CONNECT_REQPORTAL 0x40ULL /*Separate non-IO req portal */
+#define OBD_CONNECT_ACL 0x80ULL /*access control lists */
+#define OBD_CONNECT_XATTR 0x100ULL /*client use extended attr */
+#define OBD_CONNECT_CROW 0x200ULL /*MDS+OST create obj on write*/
+#define OBD_CONNECT_TRUNCLOCK 0x400ULL /*locks on server for punch */
+#define OBD_CONNECT_TRANSNO 0x800ULL /*replay sends init transno */
+#define OBD_CONNECT_IBITS 0x1000ULL /*support for inodebits locks*/
+#define OBD_CONNECT_JOIN 0x2000ULL /*files can be concatenated.
+ *We do not support JOIN FILE
+ *anymore, reserve this flags
+ *just for preventing such bit
+ *to be reused.*/
+#define OBD_CONNECT_ATTRFID 0x4000ULL /*Server can GetAttr By Fid*/
+#define OBD_CONNECT_NODEVOH 0x8000ULL /*No open hndl on specl nodes*/
+#define OBD_CONNECT_RMT_CLIENT 0x10000ULL /*Remote client */
+#define OBD_CONNECT_RMT_CLIENT_FORCE 0x20000ULL /*Remote client by force */
+#define OBD_CONNECT_BRW_SIZE 0x40000ULL /*Max bytes per rpc */
+#define OBD_CONNECT_QUOTA64 0x80000ULL /*Not used since 2.4 */
+#define OBD_CONNECT_MDS_CAPA 0x100000ULL /*MDS capability */
+#define OBD_CONNECT_OSS_CAPA 0x200000ULL /*OSS capability */
+#define OBD_CONNECT_CANCELSET 0x400000ULL /*Early batched cancels. */
+#define OBD_CONNECT_SOM 0x800000ULL /*Size on MDS */
+#define OBD_CONNECT_AT 0x1000000ULL /*client uses AT */
+#define OBD_CONNECT_LRU_RESIZE 0x2000000ULL /*LRU resize feature. */
+#define OBD_CONNECT_MDS_MDS 0x4000000ULL /*MDS-MDS connection */
+#define OBD_CONNECT_REAL 0x8000000ULL /*real connection */
+#define OBD_CONNECT_CHANGE_QS 0x10000000ULL /*Not used since 2.4 */
+#define OBD_CONNECT_CKSUM 0x20000000ULL /*support several cksum algos*/
+#define OBD_CONNECT_FID 0x40000000ULL /*FID is supported by server */
+#define OBD_CONNECT_VBR 0x80000000ULL /*version based recovery */
/* Ett declarations */
static gint ett_lustre_llog_log_llh_flags = -1 ;
static gint ett_lustre_lustre_handle_v2 = -1;
static gint ett_lustre_obd_connect_data = -1;
static gint ett_lustre_lov_mds_md_v1 = -1;
+static gint ett_lustre_lov_mds_md_v3 = -1;
static gint ett_lustre_lov_ost_data_v1 = -1;
static gint ett_lustre_obd_statfs = -1;
static gint ett_lustre_obd_ioobj = -1;
static gint ett_lustre_llog_logid = -1;
static gint ett_lustre_llog_rec_tail = -1;
static gint ett_lustre_lov_mds_md = -1;
-static gint ett_lustre_llog_create_rec = -1;
-static gint ett_lustre_llog_orphan_rec = -1;
static gint ett_lustre_llog_unlink_rec = -1;
static gint ett_lustre_llog_setattr_rec = -1;
static gint ett_lustre_llog_size_change_rec = -1;
static gint ett_lustre_fld_range = -1;
static gint ett_lustre_mdt_ioepoch = -1;
static gint ett_lustre_capa = -1;
+static gint ett_lustre_close_data = -1;
static gint ett_lustre_acl = -1;
+static gint ett_lustre_ladvise = -1;
+static gint ett_lustre_hsm_request = -1;
+static gint ett_lustre_hsm_user_item = -1;
+static gint ett_lustre_hsm_extent = -1;
+static gint ett_lustre_hsm_progress = -1;
+static gint ett_lustre_hsm_user_state = -1;
+static gint ett_lustre_quota_body = -1;
+static gint ett_lustre_lquota_id = -1;
+static gint ett_lustre_layout_intent = -1;
+static gint ett_lustre_xattrs = -1;
+static gint ett_lustre_ost_id = -1;
/* -----------------------------------------------*/
/* Header field declarations */
static int hf_lustre_mds_md_data= -1;
static int hf_lustre_mds_reint_opcode= -1;
static int hf_lustre_mds_xattr_eadata = -1;
+static int hf_lustre_mds_xattr_eadata_str = -1;
static int hf_lustre_reint_name= -1;
static int hf_lustre_reint_old_name= -1;
static int hf_lustre_ost_lvb = -1 ;
-static int hf_lustre_ldlm_fl_lock_changed = -1;
-static int hf_lustre_ldlm_fl_block_granted = -1;
-static int hf_lustre_ldlm_fl_block_conv = -1;
-static int hf_lustre_ldlm_fl_block_wait = -1;
-static int hf_lustre_ldlm_fl_cbpending = -1;
-static int hf_lustre_ldlm_fl_ast_sent = -1;
-static int hf_lustre_ldlm_fl_wait_noreproc = -1;
-static int hf_lustre_ldlm_fl_cancel = -1;
-static int hf_lustre_ldlm_fl_replay = -1;
-static int hf_lustre_ldlm_fl_intent_only = -1;
-static int hf_lustre_ldlm_fl_local_only = -1;
-static int hf_lustre_ldlm_fl_failed = -1;
-static int hf_lustre_ldlm_fl_has_intent = -1;
-static int hf_lustre_ldlm_fl_canceling = -1;
-static int hf_lustre_ldlm_fl_local = -1;
-static int hf_lustre_ldlm_fl_warn = -1;
-static int hf_lustre_ldlm_fl_discard_data = -1;
-static int hf_lustre_ldlm_fl_no_timeout = -1;
-static int hf_lustre_ldlm_fl_block_nowait = -1;
-static int hf_lustre_ldlm_fl_test_lock = -1;
-static int hf_lustre_ldlm_fl_lvb_ready = -1;
-static int hf_lustre_ldlm_fl_kms_ignore = -1;
-static int hf_lustre_ldlm_fl_no_lru = -1;
-static int hf_lustre_ldlm_fl_cancel_on_block = -1;
-static int hf_lustre_ldlm_fl_cp_reqd = -1;
-static int hf_lustre_ldlm_fl_cleaned = -1;
-static int hf_lustre_ldlm_fl_atomic_cb = -1;
-static int hf_lustre_ldlm_fl_bl_ast = -1;
-static int hf_lustre_ldlm_fl_bl_done = -1;
-static int hf_lustre_ldlm_fl_deny_on_contention = -1;
-static int hf_lustre_ldlm_ast_discard_data = -1;
+#define hf_lustre_ldlm_ast_discard_data hf_lustre_ldlm_fl_ast_discard_data
static int hf_lustre_mdt_body = -1 ;
static int hf_lustre_mdt_body_fid1 = -1;
static int hf_lustre_mdt_rec_setattr_sa_attr_flags = -1;
static int hf_lustre_mdt_rec_setattr_sa_mode = -1;
static int hf_lustre_mdt_rec_setattr_sa_padding_2 = -1;
-static int hf_lustre_mdt_rec_setattr_sa_padding_3 = -1;
+static int hf_lustre_mdt_rec_setattr_sa_projid = -1;
static int hf_lustre_mdt_rec_setattr_sa_padding_4 = -1;
static int hf_lustre_mdt_rec_setattr_sa_padding_5 = -1;
static int hf_lustre_mdt_rec_setxattr_sx_padding_10 = -1;
static int hf_lustre_mdt_rec_setxattr_sx_padding_11 = -1;
+static int hf_lustre_mdt_getinfo_key = -1;
+static int hf_lustre_mdt_getinfo_vallen = -1;
+static int hf_lustre_mdt_getinfo_data = -1;
+
+static int hf_lustre_close_data = -1;
+static int hf_lustre_close_fid = -1;
+static int hf_lustre_close_data_ver = -1;
+static int hf_lustre_close_reserved = -1;
+
static int hf_lustre_seq_opc = -1;
static int hf_lustre_seq_range = -1;
static int hf_lustre_seq_range_start = -1;
static int hf_lustre_acl = -1;
+static int hf_lustre_ost_lvb_lvb_size = -1;
+static int hf_lustre_ost_lvb_lvb_mtime = -1;
+static int hf_lustre_ost_lvb_lvb_atime = -1;
+static int hf_lustre_ost_lvb_lvb_ctime = -1;
+static int hf_lustre_ost_lvb_lvb_blocks = -1;
+static int hf_lustre_ost_lvb_lvb_mtime_ns = -1;
+static int hf_lustre_ost_lvb_lvb_atime_ns = -1;
+static int hf_lustre_ost_lvb_lvb_ctime_ns = -1;
+static int hf_lustre_ost_lvb_lvb_padding = -1;
+
+static int hf_lustre_xattrs = -1;
+static int hf_lustre_xattrs_name = -1;
+static int hf_lustre_xattrs_data = -1;
+static int hf_lustre_xattrs_size = -1;
+
static int hf_lustre_lustre_handle_cookie = -1;
static int hf_lustre_ptlrpc_body_pb_last_committed = -1;
static int hf_lustre_ptlrpc_body_pb_version = -1;
static int hf_lustre_ptlrpc_body_pb_padding = -1;
static int hf_lustre_ptlrpc_body_pb_jobid = -1;
static int hf_lustre_lustre_msg_v1_lm_handle = -1;
-static int hf_lustre_ost_lvb_lvb_atime = -1;
static int hf_lustre_ptlrpc_body_pb_timeout = -1;
static int hf_lustre_obd_statfs_os_bavail = -1;
static int hf_lustre_obd_statfs_os_bsize = -1;
static int hf_lustre_lustre_msg_v2_lm_repsize = -1;
-static int hf_lustre_lov_mds_md_v1_lmm_stripe_size = -1;
static int hf_lustre_lustre_msg_v1_lm_last_xid = -1;
static int hf_lustre_ll_fid_f_type = -1;
static int hf_lustre_lustre_msg_v2_lm_cksum = -1;
static int hf_lustre_lustre_msg_v1_lm_status = -1;
static int hf_lustre_lustre_msg_v1_lm_type = -1;
static int hf_lustre_niobuf_remote_len = -1;
-static int hf_lustre_lov_mds_md_v1_lmm_magic = -1;
static int hf_lustre_ptlrpc_body_pb_op_flags = -1;
-static int hf_lustre_ost_lvb_lvb_ctime = -1;
static int hf_lustre_ptlrpc_body_pb_type = -1;
static int hf_lustre_obd_connect_data_ocd_nllg = -1;
static int hf_lustre_obd_connect_data_ocd_nllu = -1;
static int hf_lustre_ll_fid_generation = -1;
-static int hf_lustre_ost_lvb_lvb_mtime = -1;
static int hf_lustre_obd_connect_data_ocd_ibits_known = -1;
static int hf_lustre_lustre_msg_v2_lm_padding_3 = -1;
static int hf_lustre_ptlrpc_body_pb_flags = -1;
static int hf_lustre_obd_statfs_os_spare4 = -1;
static int hf_lustre_obd_connect_data_ocd_group = -1;
static int hf_lustre_lov_ost_data_v1_l_object_seq = -1;
-static int hf_lustre_lov_mds_md_v1_lmm_object_seq = -1;
static int hf_lustre_obd_connect_data_ocd_brw_size = -1;
static int hf_lustre_ptlrpc_body_pb_limit = -1;
static int hf_lustre_obd_statfs_os_maxbytes = -1;
static int hf_lustre_lustre_msg_v2_lm_flags = -1;
static int hf_lustre_obd_statfs_os_ffree = -1;
static int hf_lustre_obd_statfs_os_files = -1;
-static int hf_lustre_lov_mds_md_v1_lmm_stripe_count = -1;
static int hf_lustre_lustre_msg_v1_lm_flags = -1;
static int hf_lustre_lustre_msg_v1_lm_last_committed = -1;
static int hf_lustre_obd_statfs_os_spare9 = -1;
static int hf_lustre_lov_ost_data_v1_l_ost_gen = -1;
static int hf_lustre_obd_statfs_os_bfree = -1;
static int hf_lustre_obd_connect_data_ocd_version = -1;
-static int hf_lustre_lov_mds_md_v1_lmm_objects = -1;
static int hf_lustre_obd_statfs_os_namelen = -1;
static int hf_lustre_obd_statfs_os_blocks = -1;
static int hf_lustre_lustre_msg_v2_lm_secflvr = -1;
static int hf_lustre_lustre_msg_v1_lm_transno = -1;
-static int hf_lustre_lov_mds_md_v1_lmm_pattern = -1;
static int hf_lustre_lustre_msg_v1_lm_opc = -1;
static int hf_lustre_obd_connect_data_ocd_grant = -1;
static int hf_lustre_obd_ioobj_ioo_bufcnt = -1;
static int hf_lustre_obd_statfs_os_spare7 = -1;
static int hf_lustre_obd_statfs_os_fsid = -1;
static int hf_lustre_obd_connect_data_ocd_cksum_types = -1;
-static int hf_lustre_ost_lvb_lvb_size = -1;
+static int hf_lustre_obd_connect_data_ocd_max_easize = -1;
+static int hf_lustre_obd_connect_data_ocd_instance = -1;
+static int hf_lustre_obd_connect_data_ocd_maxbytes = -1;
+static int hf_lustre_obd_connect_data_ocd_maxmodrpcs = -1;
static int hf_lustre_obd_statfs_os_type = -1;
static int hf_lustre_obd_statfs_os_spare6 = -1;
static int hf_lustre_obd_statfs_os_state = -1;
static int hf_lustre_obd_statfs_os_spare3 = -1;
static int hf_lustre_lustre_msg_v2_lm_magic = -1;
-static int hf_lustre_lov_mds_md_v1_lmm_object_id = -1;
static int hf_lustre_ptlrpc_body_pb_last_seen = -1;
static int hf_lustre_obd_ioobj_ioo_max_brw = -1;
static int hf_lustre_ptlrpc_body_pb_last_xid = -1;
static int hf_lustre_ptlrpc_body_pb_status = -1;
static int hf_lustre_niobuf_remote_flags = -1;
static int hf_lustre_ll_fid_id = -1;
-static int hf_lustre_ost_lvb_lvb_blocks = -1;
static int hf_lustre_lustre_msg_v2_lm_padding_2 = -1;
-static int hf_lustre_obd_connect_data_padding1 = -1;
static int hf_lustre_lov_ost_data_v1_l_ost_idx = -1;
-static int hf_lustre_obd_connect_data_padding2 = -1;
static int hf_lustre_obd_ioobj_ioo_seq = -1;
static int hf_lustre_niobuf_remote_offset=-1;
static int hf_lustre_obd_statfs_os_spare2 = -1;
static int hf_lustre_obd_quotactl_qc_stat = -1;
static int hf_lustre_qunit_data_old2_qd_id = -1;
static int hf_lustre_llog_logid_rec_padding2 = -1;
-static int hf_lustre_llog_orphan_rec_lor_tail = -1;
static int hf_lustre_llog_logid_rec_padding5 = -1;
static int hf_lustre_ldlm_intent_opc = -1;
static int hf_lustre_llog_rec_hdr_lrh_type = -1;
static int hf_lustre_obdo_o_size = -1;
static int hf_lustre_ldlm_extent_start = -1;
static int hf_lustre_llog_size_change_rec_lsc_hdr = -1;
-static int hf_lustre_llog_create_rec_lcr_tail = -1;
static int hf_lustre_llog_logid_lgl_oseq = -1;
-static int hf_lustre_llog_create_rec_lcr_hdr = -1;
static int hf_lustre_llog_cookie_lgc_padding = -1;
static int hf_lustre_qunit_data_old_qd_type = -1;
static int hf_lustre_ldlm_flock_blocking_export = -1;
static int hf_lustre_mgs_target_info_mti_svname = -1;
static int hf_lustre_llogd_body_lgd_logid = -1;
static int hf_lustre_llog_log_hdr_llh_size = -1;
-static int hf_lustre_llog_create_rec_padding = -1;
static int hf_lustre_obdo_o_handle = -1;
static int hf_lustre_obdo_o_atime = -1;
static int hf_lustre_quota_adjust_qunit_qaq_id = -1;
static int hf_lustre_obdo_o_padding_6 = -1;
static int hf_lustre_llog_cookie_lgc_index = -1;
static int hf_lustre_lov_desc_ld_uuid = -1;
-static int hf_lustre_llog_create_rec_lcr_oid = -1;
static int hf_lustre_ldlm_reply_lock_desc = -1;
static int hf_lustre_lov_desc_ld_padding_0 = -1;
static int hf_lustre_llog_unlink_rec_lur_ogen = -1;
-static int hf_lustre_llog_orphan_rec_lor_hdr = -1;
static int hf_lustre_cfg_marker_cm_flags = -1;
static int hf_lustre_obdo_o_padding_3 = -1;
static int hf_lustre_ldlm_request_lock_desc = -1;
-static int hf_lustre_llog_orphan_rec_padding = -1;
static int hf_lustre_obdo_o_flags = -1;
static int hf_lustre_mgs_target_info_mti_params = -1;
static int hf_lustre_llog_logid_lgl_ogen = -1;
static int hf_lustre_ldlm_lock_desc_l_req_mode = -1;
static int hf_lustre_ldlm_extent_end = -1;
static int hf_lustre_llog_gen_rec_lgr_hdr = -1;
-static int hf_lustre_llog_orphan_rec_lor_ogen = -1;
static int hf_lustre_llogd_body_lgd_llh_flags = -1;
static int hf_lustre_llog_log_hdr_llh_cat_idx = -1;
static int hf_lustre_llog_log_hdr_llh_bitmap_offset=-1;
-static int hf_lustre_llog_orphan_rec_lor_oid = -1;
static int hf_lustre_ldlm_reply_lock_padding = -1;
static int hf_lustre_obd_quotactl_qc_id = -1;
static int hf_lustre_llog_logid_rec_padding4 = -1;
static int hf_lustre_ldlm_flock_blocking_pid = -1;
static int hf_lustre_lov_desc_ld_tgt_count = -1;
static int hf_lustre_llogd_body_lgd_cur_offset=-1;
-static int hf_lustre_llog_create_rec_lcr_ogen = -1;
static int hf_lustre_qunit_data_old2_qd_count = -1;
static int hf_lustre_qunit_data_old2_qd_flags = -1;
static int hf_lustre_ldlm_flock_start = -1;
static int hf_lustre_llog_log_hdr_llh_tgtuuid = -1;
static int hf_lustre_cfg_marker_cm_step = -1;
static int hf_lustre_mgs_send_param_mgs_param = -1;
-static int hf_lustre_llog_create_rec_lcr_fid = -1;
static int hf_lustre_lov_desc_ld_default_stripe_offset=-1;
static int hf_lustre_ldlm_resource_desc_lr_name = -1;
static int hf_lustre_llog_rec_tail_lrt_len = -1;
static int hf_lustre_ldlm_intent_opc_getattr = -1;
static int hf_lustre_ldlm_intent_opc_lookup = -1;
static int hf_lustre_ldlm_intent_opc_unlink = -1;
+static int hf_lustre_ldlm_intent_opc_trunc = -1;
static int hf_lustre_ldlm_intent_opc_getxattr = -1;
static int hf_lustre_ldlm_intent_opc_exec = -1;
static int hf_lustre_ldlm_intent_opc_pin = -1;
+static int hf_lustre_ldlm_intent_opc_layout = -1;
+static int hf_lustre_ldlm_intent_opc_q_dqacq = -1;
+static int hf_lustre_ldlm_intent_opc_q_conn = -1;
+static int hf_lustre_ldlm_intent_opc_setxattr = -1;
static int hf_lustre_llog_hdr_llh_flag_zap_when_empty = -1;
static int hf_lustre_llog_hdr_llh_flag_is_cat = -1;
static int hf_lustre_llog_hdr_llh_flag_is_play = -1;
+static int hf_lustre_lu_ladvise = -1;
+static int hf_lustre_lu_ladvise_lla_start = -1;
+static int hf_lustre_lu_ladvise_lla_end = -1;
+static int hf_lustre_lu_ladvise_lla_advice = -1;
+static int hf_lustre_lu_ladvise_lla_padding = -1;
+
+static int hf_lustre_ldlm_key = -1;
+static int hf_lustre_ldlm_value = -1;
+
+static int hf_lustre_hsm_request = -1;
+static int hf_lustre_hsm_req_action = -1;
+static int hf_lustre_hsm_req_archive_id = -1;
+static int hf_lustre_hsm_req_flags = -1;
+static int hf_lustre_hsm_req_itemcount = -1;
+static int hf_lustre_hsm_req_data_len = -1;
+
+static int hf_lustre_hsm_user_item = -1;
+static int hf_lustre_hsm_user_item_fid = -1;
+static int hf_lustre_hsm_user_item_extent = -1;
+
+static int hf_lustre_hsm_extent = -1;
+static int hf_lustre_hsm_extent_offset = -1;
+static int hf_lustre_hsm_extent_length = -1;
+
+static int hf_lustre_hsm_progress = -1;
+static int hf_lustre_hsm_prog_fid = -1;
+static int hf_lustre_hsm_prog_cookie = -1;
+static int hf_lustre_hsm_prog_extent = -1;
+static int hf_lustre_hsm_prog_flags = -1;
+static int hf_lustre_hsm_prog_errval = -1;
+static int hf_lustre_hsm_prog_data_ver = -1;
+
+static int hf_lustre_hsm_state_get = -1;
+static int hf_lustre_hsm_us_states = -1;
+static int hf_lustre_hsm_us_archive_id = -1;
+static int hf_lustre_hsm_us_in_prog_state = -1;
+static int hf_lustre_hsm_us_in_prog_action = -1;
+static int hf_lustre_hsm_us_in_prog_location = -1;
+static int hf_lustre_hsm_us_ext_info = -1;
+
+/* Quota Body */
+static int hf_lustre_qb = -1;
+static int hf_lustre_qb_fid = -1;
+static int hf_lustre_qb_id = -1;
+static int hf_lustre_qb_flags = -1;
+static int hf_lustre_qb_padding = -1;
+static int hf_lustre_qb_count = -1;
+static int hf_lustre_qb_usage = -1;
+static int hf_lustre_qb_slv_ver = -1;
+static int hf_lustre_qb_lockh = -1;
+static int hf_lustre_qb_glb_lockh = -1;
+
+static int hf_lustre_qid_fid = -1;
+static int hf_lustre_qid_uid = -1;
+static int hf_lustre_qid_gid = -1;
+
+/* Layout Intent */
+static int hf_lustre_layout_intent = -1;
+static int hf_lustre_layout_intent_opc = -1;
+static int hf_lustre_layout_intent_flags = -1;
+static int hf_lustre_layout_intent_start = -1;
+static int hf_lustre_layout_intent_end = -1;
+
+/* mds md v1 and v3 */
+static int hf_lustre_lov_mds_md_lmm_magic = -1;
+static int hf_lustre_lov_mds_md_lmm_pattern = -1;
+static int hf_lustre_lov_mds_md_lmm_object_id = -1; /* v1 only */
+static int hf_lustre_lov_mds_md_lmm_oi = -1; /* v3 only */
+static int hf_lustre_lov_mds_md_lmm_object_seq = -1; /* v1 only */
+static int hf_lustre_lov_mds_md_lmm_stripe_size = -1;
+static int hf_lustre_lov_mds_md_lmm_stripe_count = -1;
+static int hf_lustre_lov_mds_md_lmm_layout_gen = -1;
+static int hf_lustre_lov_mds_md_lmm_pool_name = -1; /* v3 only */
+static int hf_lustre_lov_mds_md_lmm_objects = -1;
+
+/* struct ost_id */
+static int hf_lustre_ost_id_oi_id = -1;
+static int hf_lustre_ost_id_oi_seq = -1;
+
+static int hf_lustre_generic_data = -1;
/* --------------------------------------------------------------------*/
/* proto declaration */
static gint proto_lustre = -1;
+typedef int (dissect_func)(
+ tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree,
+ int hfindex);
+static dissect_func dissect_uint64, dissect_uint32, dissect_uint16, dissect_uint8;
+#define WSHARK_HEAD
+#include "lustre_dlm_flags_wshark.c"
+#undef WSHARK_HEAD
static int ldlm_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint64 intent_opc _U_) ;
-static int lustre_dissect_element_ldlm_lock_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_);
static int add_extra_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_) ;
const value_string lustre_lov_magic[] = {
{ LOV_MAGIC_V1, "LOV_MAGIC_V1" },
+ { LOV_MAGIC_V3, "LOV_MAGIC_V3" },
{0, NULL}
};
-const value_string lustre_ldlm_flags_vals[] = {
- {0x000001 , "LDLM_FL_LOCK_CHANGED"},
- {0x000002 , "LDLM_FL_BLOCK_GRANTED"},
- {0x000004 , "LDLM_FL_BLOCK_CONV"},
- {0x000008 , "LDLM_FL_BLOCK_WAIT"},
- {0x000010 , "LDLM_FL_CBPENDING"},
- {0x000020 , "LDLM_FL_AST_SENT"},
- {0x000040 , "LDLM_FL_WAIT_NOREPROC"},
- {0x000080 , "LDLM_FL_CANCEL"},
- {0x000100 , "LDLM_FL_REPLAY"},
- {0x000200 , "LDLM_FL_INTENT_ONLY"},
- {0x000400 , "LDLM_FL_LOCAL_ONLY"},
- {0x000800 , "LDLM_FL_FAILED"},
- {0x001000 , "LDLM_FL_HAS_INTENT"},
- {0x002000 , "LDLM_FL_CANCELING"},
- {0x004000 , "LDLM_FL_LOCAL"},
- {0x008000 , "LDLM_FL_WARN"},
- {0x010000 , "LDLM_FL_DISCARD_DATA"},
- {0x020000 , "LDLM_FL_NO_TIMEOUT"},
- {0x040000 , "LDLM_FL_BLOCK_NOWAIT"},
- {0x080000 , "LDLM_FL_TEST_LOCK"},
- {0x100000 , "LDLM_FL_LVB_READY"},
- {0x200000 , "LDLM_FL_KMS_IGNORE"},
- {0x400000 , "LDLM_FL_NO_LRU"},
- {0x800000 , "LDLM_FL_CANCEL_ON_BLOCK"},
- {0x1000000 , "LDLM_FL_CP_REQD"},
- {0x2000000 , "LDLM_FL_CLEANED"},
- {0x4000000 , "LDLM_FL_ATOMIC_CB"},
- {0x10000000 , "LDLM_FL_BL_AST"},
- {0x20000000 , "LDLM_FL_BL_DONE"},
- {0x40000000 , "LDLM_FL_DENY_ON_CONTENTION"},
- {0x80000000 , "LDLM_AST_DISCARD_DATA"},
- { 0, NULL }
-};
-
const value_string lustre_llog_op_type[] = {
{LLOG_PAD_MAGIC ,"LLOG_PAD_MAGIC "},
{OST_SZ_REC ,"OST_SZ_REC "},
};
const value_string lustre_mds_flags_vals[] = {
- {0x1, "LUSTRE_BFLAG_UNCOMMITTED_WRITES"},
- {0x80000000, "LUSTRE_BFLAG_EXT_FLAGS"}, /* == EXT3_RESERVED_FL */
{0x00000008, "LUSTRE_SYNC_FL "}, /* Synchronous updates */
{0x00000010, "LUSTRE_IMMUTABLE_FL "}, /* Immutable file */
{0x00000020, "LUSTRE_APPEND_FL "}, /* writes to file may only append */
+ {0x00000040, "LUSTRE_NODUMP_FL "}, /* do not dump file */
{0x00000080, "LUSTRE_NOATIME_FL "}, /* do not update atime */
+ {0x00001000, "LUSTRE_INDEX_FL "}, /* hash-indexed directory */
{0x00010000, "LUSTRE_DIRSYNC_FL "}, /* dirsync behaviour (dir only) */
+ {0x00020000, "LUSTRE_TOPDIR_FL "}, /* Top of directory hierarchies */
+ {0x00100000, "LUSTRE_DIRECTIO_FL "}, /* Use direct i/o */
+ {0x10000000, "LUSTRE_INLINE_DATA_FL "}, /* Inode has inline data. */
{ 0, NULL }
};
{ 0, NULL }
};
-const value_string lustre_mds_reint_t_vals[] = {
+const value_string lustre_mds_reint_op_vals[] = {
{ REINT_SETATTR, "REINT_SETATTR" },
{ REINT_CREATE, "REINT_CREATE" },
{ REINT_LINK, "REINT_LINK" },
{ REINT_RENAME, "REINT_RENAME" },
{ REINT_OPEN, "REINT_OPEN" },
{ REINT_SETXATTR, "REINT_SETXATTR" },
+ { REINT_RMENTRY, "REINT_RMENTRY" },
+ { REINT_MIGRATE, "REINT_MIGRATE" },
{ 0, NULL }
};
const value_string lustre_op_codes[] = {
{17 , "OST_SET_INFO"},
{18 , "OST_QUOTACHECK"},
{19 , "OST_QUOTACTL"},
- {20 , "OST_LAST_OPC"},
+ {20 , "OST_QUOTA_ADJUST_QUNIT"},
+ {21 , "OST_LADVISE"},
+ {22 , "OST_LAST_OPC"},
/*MDS Opcodes*/
{33 , "MDS_GETATTR"},
{34 , "MDS_GETATTR_NAME"},
{37 , "MDS_READPAGE"},
{38 , "MDS_CONNECT"},
{39 , "MDS_DISCONNECT"},
- {40 , "MDS_GETSTATUS"},
+ {40 , "MDS_GET_ROOT"},
{41 , "MDS_STATFS"},
{42 , "MDS_PIN"},
{43 , "MDS_UNPIN"},
{48 , "MDS_QUOTACTL"},
{49 , "MDS_GETXATTR"},
{50 , "MDS_SETXATTR"},
- {51 , "MDS_LAST_OPC"},
+ {51 , "MDS_WRITEPAGE"},
+ {52 , "MDS_IS_SUBDIR"},
+ {53 , "MDS_GET_INFO"},
+ {54 , "MDS_HSM_STATE_GET"},
+ {55 , "MDS_HSM_STATE_SET"},
+ {56 , "MDS_HSM_ACTION"},
+ {57 , "MDS_HSM_PROGRESS"},
+ {58 , "MDS_HSM_REQUEST"},
+ {59 , "MDS_HSM_CT_REGISTER"},
+ {60 , "MDS_HSM_CT_UNREGISTER"},
+ {61 , "MDS_SWAP_LAYOUTS"},
+ {62 , "MDS_LAST_OPC"},
/*LDLM Opcodes*/
{101 , "LDLM_ENQUEUE"},
{102 , "LDLM_CONVERT"},
{104 , "LDLM_BL_CALLBACK"},
{105 , "LDLM_CP_CALLBACK"},
{106 , "LDLM_GL_CALLBACK"},
- {107 , "LDLM_LAST_OPC"},
+ {107 , "LDLM_SET_INFO"},
+ {108 , "LDLM_LAST_OPC"},
/*MGS Opcodes*/
{250 , "MGS_CONNECT"},
{251 , "MGS_DISCONNECT"},
{ 901, "FLD_LAST_OPC"},
{ 0, NULL }
};
-/*const value_string lustre_ldlm_mode_t_vals[] = {*/
-/* { LCK_MINMODE, "MINMODE" },*/
-/* { LCK_EX, "EX" },*/
-/* { LCK_PW, "PW" },*/
-/* { LCK_PR, "PR" },*/
-/* { LCK_CW, "CW" },*/
-/* { LCK_CR, "CR" },*/
-/* { LCK_NL, "NL" },*/
-/* { LCK_GROUP, "GROUP" },*/
-/* { 0, NULL }*/
-/*};*/
/* detailled version the information came from : http://wiki.lustre.org/images/e/e5/LustreInternals_Architecture.pdf */
-const value_string lustre_ldlm_mode_t_vals[] = {
+const value_string lustre_ldlm_mode_vals[] = {
{ LCK_MINMODE, "MINMODE" },
{ LCK_EX, "Exclusive" },
{ LCK_PW, "Protected Write" },
{ 0, NULL }
};
-const value_string lustre_ldlm_type_t_vals[] = {
+const value_string lustre_ldlm_type_vals[] = {
{ LDLM_PLAIN, "LDLM_PLAIN" },
{ LDLM_EXTENT,"LDLM_EXTENT" },
{ LDLM_FLOCK, "LDLM_FLOCK" },
{ 0, NULL }
};
+/* from lustre_user.h */
+enum hsm_user_action {
+ HUA_NONE = 1, /* no action (noop) */
+ HUA_ARCHIVE = 10, /* copy to hsm */
+ HUA_RESTORE = 11, /* prestage */
+ HUA_RELEASE = 12, /* drop ost objects */
+ HUA_REMOVE = 13, /* remove from archive */
+ HUA_CANCEL = 14 /* cancel a request */
+};
+const value_string lustre_hsm_user_action_t_vals[] = {
+ { HUA_NONE, "NOOP" },
+ { HUA_ARCHIVE, "ARCHIVE" },
+ { HUA_RESTORE, "RESTORE" },
+ { HUA_RELEASE, "RELEASE" },
+ { HUA_REMOVE, "REMOVE" },
+ { HUA_CANCEL, "CANCEL" },
+};
+
+enum hsm_states {
+ HS_EXISTS = 0x00000001,
+ HS_DIRTY = 0x00000002,
+ HS_RELEASED = 0x00000004,
+ HS_ARCHIVED = 0x00000008,
+ HS_NORELEASE = 0x00000010,
+ HS_NOARCHIVE = 0x00000020,
+ HS_LOST = 0x00000040,
+};
+const value_string lustre_hsm_states_t_vals[] = {
+ { HS_EXISTS, "EXISTS" },
+ { HS_DIRTY, "DIRTY" },
+ { HS_RELEASED, "RELEASED" },
+ { HS_ARCHIVED, "ARCHIVED" },
+ { HS_NORELEASE, "NORELEASED" },
+ { HS_NOARCHIVE, "NOARCHIVED" },
+ { HS_LOST, "LOST" },
+};
+
+enum hsm_progress_states {
+ HPS_WAITING = 1,
+ HPS_RUNNING = 2,
+ HPS_DONE = 3,
+};
+const value_string lustre_hsm_progress_state_t_vals[] = {
+ { HPS_WAITING, "WAITING" },
+ { HPS_RUNNING, "RUNNING" },
+ { HPS_DONE, "DONE" },
+};
+
#ifndef ENABLE_STATIC
const gchar version[] = VERSION;
/* display functions */
/* ------------------------------------------------------------------- */
/* display str in left corner and in COL */
-/* TODO : do we need to use inline here ?*/
/* @gint col : the col where we add the information */
-inline static void display_info_str(proto_item *pi, column_info *cinfo, gint col, const gchar* str)
+static void display_info_str(proto_item *pi, column_info *cinfo, gint col,
+ const gchar *str)
{
- if (NULL !=pi)
- proto_item_append_text(pi, str);
+ if (NULL != pi)
+ proto_item_append_text(pi, str);
- if (NULL !=cinfo)
- if (check_col(cinfo, col))
- col_append_str(cinfo, col, str);
+ if (NULL != cinfo)
+ col_append_str(cinfo, col, str);
}
/*
* Need to be (re)written
*/
-static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col, const char* format, const gchar * str){
-
- if (NULL !=pi){
- //va_start(ap, format);
- proto_item_append_text(pi, format, str);
- //va_end(ap);
- }
+static void display_info_fstr(proto_item *pi, column_info *cinfo, gint col,
+ const char *format, const gchar *str)
+{
+ if (NULL != pi)
+ proto_item_append_text(pi, format, str);
- if (NULL !=cinfo){
- if (check_col(cinfo, col)){
- // va_list ap;
- // va_start(ap, format);
- col_append_fstr(cinfo, col, format, str);
- // va_end(ap);
- }
- }
+ if (NULL != cinfo)
+ col_append_fstr(cinfo, col, format, str);
}
-/* ------------------------------ basic dissect functions ------------------------ */
-static int
-dissect_uint64
-(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
+/* -------------------------- basic dissect functions ------------------- */
+static int dissect_uint64(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, int hfindex)
{
proto_tree_add_item(tree, hfindex, tvb, offset, 8, TRUE);
return offset+8;
}
static int
-dissect_uint32
-(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_, proto_tree *tree, int hfindex)
+dissect_uint32(tvbuff_t *tvb, gint offset, packet_info *pinfo _U_,
+ proto_tree *tree, int hfindex)
{
proto_tree_add_item(tree, hfindex, tvb, offset, 4, TRUE);
return offset+4;
proto_tree_add_item(tree, hfindex, tvb, offset, 1, TRUE);
return offset+1;
}
+
/* ------------------------------------------------------------------------- */
/* dissect raw data */
if (data_len == 0)
return offset;
- proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE);
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE);
offset += data_len;
proto_item_set_len(item, offset-old_offset);
return offset;
}
+static int
+lustre_dissect_struct_element_data(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_, proto_tree *parent_tree _U_,
+ int hf_index _U_, guint32 data_len)
+{
+ proto_item *item = NULL;
+
+ if (data_len == 0)
+ return offset;
+
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, data_len, TRUE);
+
+ offset += data_len;
+ proto_item_set_len(item, data_len);
+ offset = add_extra_padding(tvb, offset, pinfo, parent_tree);
+
+ return offset;
+}
+
int
lustre_dissect_struct_hmac(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
proto_tree *parent_tree _U_, int hf_index _U_, int max_length)
return offset;
}
+/* struct ost_id { */
+/* union { */
+/* struct { */
+/* __u64 oi_id; */
+/* __u64 oi_seq; */
+/* } oi; */
+/* struct lu_fid oi_fid; */
+/* }; */
+/* }; */
+int
+lustre_dissect_struct_ostid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+
+ old_offset=offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_ost_id);
+ }
+
+ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_id);
+ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_id_oi_seq);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
/* ------------------------------------------------------------------------ */
lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_connect_flags);
-
return offset;
}
static int
lustre_dissect_element_obd_connect_data_ocd_version(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_version);
+ guint32 version;
+ guint32 major, minor, patch, fix;
+ proto_item *item;
- return offset;
+ version = tvb_get_letohl(tvb, offset);
+ fix = version & 0xff;
+ version >>= 8;
+ patch = version & 0xff;
+ version >>= 8;
+ minor = version & 0xff;
+ version >>= 8;
+ major = version & 0xff;
+
+ item = proto_tree_add_item(tree, hf_lustre_obd_connect_data_ocd_version,
+ tvb, offset, 0, TRUE);
+ proto_item_append_text(item, ": %d.%d.%d.%d",
+ major, minor, patch, fix);
+ proto_item_set_len(item, 4);
+
+ offset += 4;
+ return offset;
}
static int
}
static int
-lustre_dissect_element_obd_connect_data_ocd_nllg(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_nllg);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_obd_connect_data_ocd_transno(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_transno);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_obd_connect_data_ocd_group(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_group);
-
- return offset;
-}
-
-static int
lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_ocd_cksum_types);
}
static int
-lustre_dissect_element_obd_connect_data_padding1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding1);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_obd_connect_data_padding2(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_obd_connect_data_padding2);
-
- return offset;
-}
-
-static int
-lustre_dissect_struct_obd_connect_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+lustre_dissect_struct_obd_connect_data(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_,
+ int hf_index _U_, guint32 buf_num)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
-
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
- old_offset=offset;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_obd_connect_data);
- }
-
- offset=lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb, offset, pinfo, tree);
+ old_offset = offset;
- offset=lustre_dissect_element_obd_connect_data_ocd_version(tvb, offset, pinfo, tree);
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb,
+ offset, -1, TRUE);
+ tree = proto_item_add_subtree(item,
+ ett_lustre_obd_connect_data);
+ }
- offset=lustre_dissect_element_obd_connect_data_ocd_grant(tvb, offset, pinfo, tree);
+ /* ocd_connect_flags = get_... */
+ offset = lustre_dissect_element_obd_connect_data_ocd_connect_flags(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_ocd_index(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_obd_connect_data_ocd_version(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_obd_connect_data_ocd_grant(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_obd_connect_data_ocd_index(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_ocd_nllu(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_obd_connect_data_ocd_brw_size(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_ocd_nllg(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_obd_connect_data_ocd_ibits_known(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_ocd_transno(tvb, offset, pinfo, tree);
+ if (data_len == 72) {
+ offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_ocd_group(tvb, offset, pinfo, tree);
+ } else { /* if data_len == 192 */
+ /* Actually blocksize, inodespace, grant_extent */
+ offset = lustre_dissect_element_obd_connect_data_ocd_nllu(tvb,
+ offset, pinfo, tree);
+ }
- offset=lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb, offset, pinfo, tree);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_obd_connect_data_ocd_nllg);
+ offset = dissect_uint64(tvb, offset, pinfo, tree,
+ hf_lustre_obd_connect_data_ocd_transno);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_obd_connect_data_ocd_group);
+ offset = lustre_dissect_element_obd_connect_data_ocd_cksum_types(tvb,
+ offset, pinfo, tree);
- offset=lustre_dissect_element_obd_connect_data_padding1(tvb, offset, pinfo, tree);
+ /* if (ocd_connect_flags & OBD_CONNECT_MAX_EASIZE) */
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_obd_connect_data_ocd_max_easize);
- offset=lustre_dissect_element_obd_connect_data_padding2(tvb, offset, pinfo, tree);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_obd_connect_data_ocd_instance);
+ /* if (ocd_connect_flags & OBD_CONNECT_MAXBYTES) */
+ offset = dissect_uint64(tvb, offset, pinfo, tree,
+ hf_lustre_obd_connect_data_ocd_maxbytes);
+ if (data_len >= 74) /* && (flags & OBD_CONNECT_MULTIMODRPCS) */
+ offset = dissect_uint16(tvb, offset, pinfo, tree,
+ hf_lustre_obd_connect_data_ocd_maxmodrpcs);
+ if (old_offset+data_len > offset) {
+ proto_tree_add_item(tree, hf_lustre_extra_padding,
+ tvb, offset, (old_offset+data_len)-offset, TRUE);
+ offset = old_offset+data_len;
+ }
- proto_item_set_len(item, offset-old_offset);
+ proto_item_set_len(item, offset-old_offset);
- return offset;
+ return offset;
}
/* IDL: uint64 lmm_object_id; */
/* IDL: uint64 lmm_object_seq; */
/* IDL: uint32 lmm_stripe_size; */
-/* IDL: uint32 lmm_stripe_count; */
+/* IDL: uint16 lmm_stripe_count; */
+/* IDL: uint16 lmm_layout_gen; */
/* IDL: struct lov_ost_data_v1 { */
/* IDL: } lmm_objects[0]; <-- en fait on en a lmm_stripe_count */
/* IDL: } */
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_magic);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_pattern);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_id);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_object_seq(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_object_seq);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_size);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_lov_mds_md_v1_lmm_stripe_count);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=lustre_dissect_struct_lov_ost_data_v1(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1_lmm_objects);
- return offset;
-}
-
-static int
-lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int num)
-{
- int i;
- /*g_print("num = %d", num);*/
- for (i = 0; i < num; i++){
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects_(tvb, offset, pinfo, tree);
- }
-
- return offset;
-}
-
-
-
int
lustre_dissect_struct_lov_mds_md_v1(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
-
- guint32 stripe_count ;
-
-
- old_offset=offset;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1);
- }
-
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_magic(tvb, offset, pinfo, tree);
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset, i;
+
+ guint16 stripe_count;
+
+ old_offset=offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index,
+ tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v1);
+ }
+
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_magic);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_pattern);
+ offset = dissect_uint64(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_object_id);
+ offset = dissect_uint64(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_object_seq);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_stripe_size);
+
+ stripe_count = tvb_get_letohs(tvb, offset);
+ offset = dissect_uint16(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_stripe_count);
+ offset = dissect_uint16(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_layout_gen);
+
+ for (i = 0; i < stripe_count; ++i)
+ offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset,
+ pinfo, tree, hf_lustre_lov_mds_md_lmm_objects);
+
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
+
+
+/* struct lov_mds_md_v3 { /\* LOV EA mds/wire data (little-endian) *\/ */
+/* __u32 lmm_magic; /\* magic number = LOV_MAGIC_V3 *\/ */
+/* __u32 lmm_pattern; /\* LOV_PATTERN_RAID0, LOV_PATTERN_RAID1 *\/ */
+/* struct ost_id lmm_oi; /\* LOV object ID *\/ */
+/* __u32 lmm_stripe_size; /\* size of stripe in bytes *\/ */
+/* /\* lmm_stripe_count used to be __u32 *\/ */
+/* __u16 lmm_stripe_count; /\* num stripes in use for this object *\/ */
+/* __u16 lmm_layout_gen; /\* layout generation number *\/ */
+/* char lmm_pool_name[LOV_MAXPOOLNAME + 1]; /\* must be 32bit aligned *\/ */
+/* struct lov_ost_data_v1 lmm_objects[0]; /\* per-stripe data *\/ */
+/* }; */
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_pattern(tvb, offset, pinfo, tree);
+int
+lustre_dissect_struct_lov_mds_md_v3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset, i;
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_id(tvb, offset, pinfo, tree);
+ guint16 stripe_count;
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_object_seq(tvb, offset, pinfo, tree);
+ old_offset=offset;
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_size(tvb, offset, pinfo, tree);
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index,
+ tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_lov_mds_md_v3);
+ }
- stripe_count = tvb_get_letohl(tvb,offset);
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_stripe_count(tvb, offset, pinfo, tree);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_magic);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_pattern);
+ offset = lustre_dissect_struct_ostid(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_oi);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_stripe_size);
- offset=lustre_dissect_element_lov_mds_md_v1_lmm_objects(tvb, offset, pinfo, tree, stripe_count);
+ stripe_count = tvb_get_letohs(tvb, offset);
+ offset = dissect_uint16(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_stripe_count);
+ offset = dissect_uint16(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_layout_gen);
+ offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree,
+ hf_lustre_lov_mds_md_lmm_pool_name,
+ LOV_MAXPOOLNAME+1);
+ for (i = 0; i < stripe_count; ++i)
+ offset = lustre_dissect_struct_lov_ost_data_v1(tvb, offset,
+ pinfo, tree, hf_lustre_lov_mds_md_lmm_objects);
- proto_item_set_len(item, offset-old_offset);
+ proto_item_set_len(item, offset-old_offset);
- return offset;
+ return offset;
}
int
offset=lustre_dissect_struct_lov_mds_md_v1(tvb,offset,pinfo,parent_tree,
hf_index);
break;
+ case LOV_MAGIC_V3:
+ offset=lustre_dissect_struct_lov_mds_md_v3(tvb,offset,pinfo,parent_tree,
+ hf_index);
+ break;
default:
offset=lustre_dissect_element_data(tvb, offset, pinfo, parent_tree,
- hf_lustre_extra_padding, buff_num);
+ hf_lustre_generic_data, buff_num);
break;
};
/* IDL: uint64 lvb_atime; */
/* IDL: uint64 lvb_ctime; */
/* IDL: uint64 lvb_blocks; */
+/* v1 of this type ends here */
+/* uint32 lvb_mtime_ns; */
+/* uint32 lvb_atime_ns; */
+/* uint32 lvb_ctime_ns; */
+/* uint32 lvb_padding; */
/* IDL: } */
static int
-lustre_dissect_element_ost_lvb_lvb_size(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_size);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_ost_lvb_lvb_mtime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- nstime_t ns;
- /* timestamp */
- ns.secs = tvb_get_letohl(tvb,offset);
- ns.nsecs=0;
- proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_mtime, tvb, offset, 8, &ns );
- offset+=8;
- return offset;
-}
-
-static int
-lustre_dissect_element_ost_lvb_lvb_atime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- nstime_t ns;
- /* timestamp */
- ns.secs = tvb_get_letohl(tvb,offset);
- ns.nsecs=0;
- proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_atime, tvb, offset, 8, &ns );
- offset+=8;
-
- return offset;
-}
-
-static int
-lustre_dissect_element_ost_lvb_lvb_ctime(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- nstime_t ns;
- /* timestamp */
- ns.secs = tvb_get_letohl(tvb,offset);
- ns.nsecs=0;
- proto_tree_add_time(tree, hf_lustre_ost_lvb_lvb_ctime, tvb, offset, 8, &ns );
- offset+=8;
-
- return offset;
-}
-
-static int
-lustre_dissect_element_ost_lvb_lvb_blocks(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+lustre_dissect_element_ost_lvb_lvb_time(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_,
+ proto_tree *tree _U_,
+ int hf_index _U_, int ns_offset _U_)
{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_ost_lvb_lvb_blocks);
-
- return offset;
+ nstime_t ns;
+ /* timestamp */
+ ns.secs = tvb_get_letoh64(tvb, offset);
+ if (ns_offset != 0)
+ ns.nsecs = tvb_get_letohl(tvb, offset+ns_offset);
+ proto_tree_add_time(tree, hf_index, tvb, offset, 8, &ns);
+ offset += 8;
+ return offset;
}
int
-lustre_dissect_struct_ost_lvb(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
+lustre_dissect_struct_ost_lvb(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_,
+ int hf_index _U_, int buff_num _U_)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int buff_len;
+ buff_len = LUSTRE_BUFFER_LEN(buff_num);
+ if (buff_len == 0)
+ return offset;
- old_offset=offset;
+ old_offset=offset;
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_ost_lvb);
- }
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_ost_lvb);
+ }
- offset=lustre_dissect_element_ost_lvb_lvb_size(tvb, offset, pinfo, tree);
+ /* v1 format size is 40
+ * v2 format size is 56 w/ ns for times
+ */
- offset=lustre_dissect_element_ost_lvb_lvb_mtime(tvb, offset, pinfo, tree);
+ offset = dissect_uint64(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb_lvb_size);
- offset=lustre_dissect_element_ost_lvb_lvb_atime(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset,
+ pinfo, tree, hf_lustre_ost_lvb_lvb_mtime,
+ (buff_len >= 56) ?32 :0);
- offset=lustre_dissect_element_ost_lvb_lvb_ctime(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset,
+ pinfo, tree, hf_lustre_ost_lvb_lvb_atime,
+ (buff_len >= 56) ?28 :0);
- offset=lustre_dissect_element_ost_lvb_lvb_blocks(tvb, offset, pinfo, tree);
+ offset = lustre_dissect_element_ost_lvb_lvb_time(tvb, offset,
+ pinfo, tree, hf_lustre_ost_lvb_lvb_ctime,
+ (buff_len >= 56) ?24 :0);
+ offset = dissect_uint64(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb_lvb_blocks);
- proto_item_set_len(item, offset-old_offset);
+ /* post-v1 format */
+ if (buff_len >= 56) {
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb_lvb_mtime_ns);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb_lvb_atime_ns);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb_lvb_ctime_ns);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb_lvb_padding);
+ }
+ proto_item_set_len(item, offset-old_offset);
- return offset;
+ return offset;
}
/* IDL: uint32 sa_attr_flags; */
/* IDL: uint32 sa_mode; */
/* IDL: uint32 sa_padding_2; */
-/* IDL: uint32 sa_padding_3; */
+/* IDL: uint32 sa_projid; */
/* IDL: uint32 sa_padding_4; */
/* IDL: uint32 sa_padding_5; */
/* IDL: } */
}
static int
-lustre_dissect_element_mdt_rec_setattr_sa_padding_3(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
+lustre_dissect_element_mdt_rec_setattr_sa_projid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_padding_3);
+ offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr_sa_projid);
return offset;
}
tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_setattr);
}
sa_opcode=tvb_get_letohl(tvb,offset);
- display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_t_vals, "Unknown sa_opc"));
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sa_opcode, lustre_mds_reint_op_vals, "Unknown sa_opc"));
offset=lustre_dissect_element_mdt_rec_setattr_sa_opcode(tvb, offset, pinfo, tree);
offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_2(tvb, offset, pinfo, tree);
- offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_3(tvb, offset, pinfo, tree);
+ offset=lustre_dissect_element_mdt_rec_setattr_sa_projid(tvb, offset, pinfo, tree);
offset=lustre_dissect_element_mdt_rec_setattr_sa_padding_4(tvb, offset, pinfo, tree);
tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_create);
}
cr_opcode=tvb_get_letohl(tvb,offset);
- display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(cr_opcode, lustre_mds_reint_t_vals, "Unknown cr_opc"));
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(cr_opcode, lustre_mds_reint_op_vals, "Unknown cr_opc"));
offset=lustre_dissect_element_mdt_rec_create_cr_opcode(tvb, offset, pinfo, tree);
tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_link);
}
lk_opcode=tvb_get_letohl(tvb,offset);
- display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lk_opcode, lustre_mds_reint_t_vals, "Unknown lk_opc"));
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lk_opcode, lustre_mds_reint_op_vals, "Unknown lk_opc"));
offset=lustre_dissect_element_mdt_rec_link_lk_opcode(tvb, offset, pinfo, tree);
}
ul_opcode=tvb_get_letohl(tvb,offset);
- display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(ul_opcode, lustre_mds_reint_t_vals, "Unknown ul_opc"));
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(ul_opcode, lustre_mds_reint_op_vals, "Unknown ul_opc"));
offset=lustre_dissect_element_mdt_rec_unlink_ul_opcode(tvb, offset, pinfo, tree);
}
rn_opcode=tvb_get_letohl(tvb,offset);
- display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(rn_opcode, lustre_mds_reint_t_vals, "Unknown rn_opc"));
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(rn_opcode, lustre_mds_reint_op_vals, "Unknown rn_opc"));
offset=lustre_dissect_element_mdt_rec_rename_rn_opcode(tvb, offset, pinfo, tree);
tree = proto_item_add_subtree(item, ett_lustre_mdt_rec_setxattr);
}
sx_opcode=tvb_get_letohl(tvb,offset);
- display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sx_opcode, lustre_mds_reint_t_vals, "Unknown sx_opc"));
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(sx_opcode, lustre_mds_reint_op_vals, "Unknown sx_opc"));
offset=lustre_dissect_element_mdt_rec_setxattr_sx_opcode(tvb, offset, pinfo, tree);
return offset;
}
-
-
/* IDL: struct ldlm_res_id { */
/* IDL: uint64 name[4]; */
/* IDL: } */
/* IDL: } */
int
-lustre_dissect_enum_ldlm_mode_t(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_)
+lustre_dissect_enum_ldlm_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_)
{
offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index);
return offset;
/* IDL: } */
int
-lustre_dissect_enum_ldlm_type_t(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_)
+lustre_dissect_enum_ldlm_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_)
{
offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type );
return offset;
/* IDL: } */
static int
-lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- guint32 opcode;
- /* this opcode is like a flag*/
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_open );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_creat );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_readdir );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getattr );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_lookup );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_unlink );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_getxattr);
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_exec );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_intent_opc_pin );
- opcode = tvb_get_letohl(tvb,offset);
+lustre_dissect_element_ldlm_intent_opc(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_,
+ proto_tree *tree _U_)
+{
+ guint32 opcode;
+ /* this opcode is like a flag*/
+#define DOBIT(_hf) dissect_uint32(tvb, offset, pinfo, tree, (_hf))
+ DOBIT(hf_lustre_ldlm_intent_opc_open );
+ DOBIT(hf_lustre_ldlm_intent_opc_creat );
+ DOBIT(hf_lustre_ldlm_intent_opc_readdir );
+ DOBIT(hf_lustre_ldlm_intent_opc_getattr );
+ DOBIT(hf_lustre_ldlm_intent_opc_lookup );
+ DOBIT(hf_lustre_ldlm_intent_opc_unlink );
+ DOBIT(hf_lustre_ldlm_intent_opc_getxattr);
+ DOBIT(hf_lustre_ldlm_intent_opc_exec );
+ DOBIT(hf_lustre_ldlm_intent_opc_pin );
+ DOBIT(hf_lustre_ldlm_intent_opc_layout );
+ DOBIT(hf_lustre_ldlm_intent_opc_q_dqacq );
+ DOBIT(hf_lustre_ldlm_intent_opc_q_conn );
+ DOBIT(hf_lustre_ldlm_intent_opc_setxattr);
+#undef DOBIT
+ opcode = tvb_get_letohl(tvb,offset);
display_info_str(tree->parent, pinfo->cinfo, COL_INFO, "[ intent :");
if(opcode & IT_OPEN ){
display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " unlink");
proto_item_append_text(tree, " unlink" );
}
+ if(opcode & IT_TRUNC ){
+ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " trunc");
+ proto_item_append_text(tree, " trunc" );
+ }
if(opcode & IT_GETXATTR){
display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " getxattr");
proto_item_append_text(tree, " getxattr" );
display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " pin");
proto_item_append_text(tree, " pin" );
}
+ if(opcode & IT_LAYOUT ){
+ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " layout");
+ proto_item_append_text(tree, " layout" );
+ }
+ if(opcode & IT_QUOTA_DQACQ ){
+ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_dqacq");
+ proto_item_append_text(tree, " quota_dqacq" );
+ }
+ if(opcode & IT_QUOTA_CONN ){
+ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " quota_conn");
+ proto_item_append_text(tree, " quota_conn" );
+ }
+ if(opcode & IT_SETXATTR ){
+ display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " setxattr");
+ proto_item_append_text(tree, " setxattr" );
+ }
display_info_str(tree->parent, pinfo->cinfo, COL_INFO, " ]");
offset+=8;
}
/* IDL: struct ldlm_resource_desc { */
-/* IDL: ldlm_type_t lr_type; */
-/* IDL: uint32 lr_padding; */
-/* IDL: struct ldlm_res_id { */
+/* IDL: enum ldlm_type lr_type; */
+/* IDL: uint32 lr_padding; */
+/* IDL: struct ldlm_res_id { */
/* IDL: } lr_name; */
/* IDL: } */
lustre_dissect_element_ldlm_resource_desc_lr_type(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
/* offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type);*/
- offset=lustre_dissect_enum_ldlm_type_t(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type);
+ offset=lustre_dissect_enum_ldlm_type(tvb, offset, pinfo, tree, hf_lustre_ldlm_resource_desc_lr_type);
return offset;
}
/* IDL: struct ldlm_lock_desc { */
-/* IDL: struct ldlm_resource_desc { */
-/* IDL: } l_resource; */
-/* IDL: ldlm_mode_t l_req_mode; */
-/* IDL: ldlm_mode_t l_granted_mode; */
-/* IDL: ldlm_policy_data_t l_policy_data; */
+/* IDL: struct ldlm_resource_desc { */
+/* IDL: } l_resource; */
+/* IDL: enum ldlm_mode l_req_mode; */
+/* IDL: enum ldlm_mode l_granted_mode; */
+/* IDL: union ldlm_policy_data l_policy_data; */
/* IDL: } */
static int
static int
lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- offset=lustre_dissect_enum_ldlm_mode_t(tvb, offset, pinfo, tree, hf_lustre_ldlm_lock_desc_l_req_mode);
+ offset=lustre_dissect_enum_ldlm_mode(tvb, offset, pinfo, tree, hf_lustre_ldlm_lock_desc_l_req_mode);
return offset;
}
static int
lustre_dissect_element_ldlm_lock_desc_l_granted_mode(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- offset=lustre_dissect_enum_ldlm_mode_t(tvb, offset, pinfo, tree, hf_lustre_ldlm_lock_desc_l_granted_mode);
+ offset=lustre_dissect_enum_ldlm_mode(tvb, offset, pinfo, tree, hf_lustre_ldlm_lock_desc_l_granted_mode);
return offset;
}
lock_req_mode = tvb_get_letohl(tvb,offset);
- display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lock_req_mode, lustre_ldlm_mode_t_vals, "Unknown lock"));
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(lock_req_mode, lustre_ldlm_mode_vals, "Unknown lock"));
offset=lustre_dissect_element_ldlm_lock_desc_l_req_mode(tvb, offset, pinfo, tree);
/* IDL: struct ldlm_request { */
-/* IDL: uint32 lock_flags; */
-/* IDL: uint32 lock_count; */
-/* IDL: struct ldlm_lock_desc { */
-/* IDL: } lock_desc; */
-/* IDL: struct lustre_handle { */
-/* IDL: } lock_handle[2]; */
+/* IDL: uint32 lock_flags; */
+/* IDL: uint32 lock_count; */
+/* IDL: struct ldlm_lock_desc { */
+/* IDL: } lock_desc; */
+/* IDL: struct lustre_handle { */
+/* IDL: } lock_handle[2]; */
/* IDL: } */
static int
lustre_dissect_element_ldlm_request_lock_handle_(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- /*if (check_col(pinfo->cinfo, COL_INFO)) */
/* col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/
offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_request_lock_handle);
return offset;
}
-
-/* IDL: struct ldlm_reply { */
-/* IDL: uint32 lock_flags; */
-/* IDL: uint32 lock_padding; */
-/* IDL: struct ldlm_lock_desc { */
-/* IDL: } lock_desc; */
-/* IDL: struct lustre_handle { */
-/* IDL: } lock_handle; */
-/* IDL: uint64 lock_policy_res1; */
-/* IDL: uint64 lock_policy_res2; */
-/* IDL: } */
-
-static int
-lustre_dissect_element_ldlm_lock_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
-{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree,hf_index, tvb, offset, 4, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_ldlm_lock_flags);
- }
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_ast_discard_data);
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_deny_on_contention);
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_bl_done );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_bl_ast );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_atomic_cb );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cleaned );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cp_reqd );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cancel_on_block );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_lru );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_kms_ignore );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_lvb_ready );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_test_lock );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_nowait );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_no_timeout );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_discard_data );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_warn );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_local );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_canceling );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_has_intent );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_failed );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_local_only );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_intent_only );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_replay );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cancel );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_wait_noreproc );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_ast_sent );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_cbpending );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_wait );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_conv );
- dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_block_granted );
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_ldlm_fl_lock_changed );
- return offset;
-}
-
static int
lustre_dissect_element_ldlm_reply_lock_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
static int
lustre_dissect_element_ldlm_reply_lock_handle(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- /*if (check_col(pinfo->cinfo, COL_INFO)) */
/* col_append_fstr(pinfo->cinfo, COL_INFO, " ldlm cookie : %" G_GINT64_MODIFIER "u", tvb_get_letoh64(tvb,offset) );*/
offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_ldlm_reply_lock_handle);
int
lustre_dissect_element_mgs_config_body_name(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
{
- int string_len = 64;
- proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE);
- display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s",
- (const gchar *) tvb_get_string(tvb,offset,string_len) );
- offset+=string_len;
+ int string_len = 64;
+ proto_tree_add_item(parent_tree, hf_index, tvb,
+ offset, string_len, TRUE);
+#ifdef WIRESHARK_COMPAT
+ display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s",
+ (const gchar *)tvb_get_string(tvb, offset,
+ string_len));
+#else
+ display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " name : %s",
+ (const gchar *)tvb_get_string_enc(wmem_packet_scope(),
+ tvb, offset,
+ string_len,
+ ENC_ASCII));
+#endif
+ offset += string_len;
- return offset;
+ return offset;
}
int
lustre_dissect_struct_mgs_config_body(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ old_offset = offset;
- old_offset=offset;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_mgs_config_body);
- }
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb,
+ offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_mgs_config_body);
+ }
- offset=lustre_dissect_element_mgs_config_body_name(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_name);
+ offset = lustre_dissect_element_mgs_config_body_name(tvb, offset, pinfo,
+ tree, hf_lustre_mgs_config_body_name);
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_offset);
- offset=dissect_uint16(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_type);
- offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_reserved);
- offset=dissect_uint8(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_bits);
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_mgs_config_body_units);
+ offset = dissect_uint64(tvb, offset, pinfo, tree,
+ hf_lustre_mgs_config_body_offset);
+ offset = dissect_uint16(tvb, offset, pinfo, tree,
+ hf_lustre_mgs_config_body_type);
+ offset = dissect_uint8(tvb, offset, pinfo, tree,
+ hf_lustre_mgs_config_body_reserved);
+ offset = dissect_uint8(tvb, offset, pinfo, tree,
+ hf_lustre_mgs_config_body_bits);
+ offset = dissect_uint32(tvb, offset, pinfo, tree,
+ hf_lustre_mgs_config_body_units);
- proto_item_set_len(item, offset-old_offset);
+ proto_item_set_len(item, offset-old_offset);
- return offset;
+ return offset;
}
/* IDL: struct mgs_config_res {
return offset;
}
-/* IDL: struct llog_create_rec { */
-/* IDL: struct llog_rec_hdr { */
-/* IDL: } lcr_hdr; */
-/* IDL: struct ll_fid { */
-/* IDL: } lcr_fid; */
-/* IDL: uint64 lcr_oid; */
-/* IDL: uint32 lcr_ogen; */
-/* IDL: uint32 padding; */
-/* IDL: struct llog_rec_tail { */
-/* IDL: } lcr_tail; */
-/* IDL: } */
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d56e0)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_hdr);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_fid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d5830)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_fid);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_create_rec_lcr_oid);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_create_rec_lcr_ogen);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_create_rec_padding);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_create_rec_lcr_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d69dc)(tvb,offset,pinfo,tree,hf_lustre_llog_create_rec_lcr_tail);
-
- return offset;
-}
-
-int
-lustre_dissect_struct_llog_create_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
-{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
-
-
-
- old_offset=offset;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_llog_create_rec);
- }
-
- offset=lustre_dissect_element_llog_create_rec_lcr_hdr(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_fid(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_oid(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_ogen(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_padding(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_create_rec_lcr_tail(tvb, offset, pinfo, tree);
-
-
- proto_item_set_len(item, offset-old_offset);
-
- return offset;
-}
-
-
-
-
-/* IDL: struct llog_orphan_rec { */
-/* IDL: struct llog_rec_hdr { */
-/* IDL: } lor_hdr; */
-/* IDL: uint64 lor_oid; */
-/* IDL: uint32 lor_ogen; */
-/* IDL: uint32 padding; */
-/* IDL: struct llog_rec_tail { */
-/* IDL: } lor_tail; */
-/* IDL: } */
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_hdr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d767c)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_hdr);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_oid(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_llog_orphan_rec_lor_oid);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_ogen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_orphan_rec_lor_ogen);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_padding(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- offset=dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_llog_orphan_rec_padding);
-
- return offset;
-}
-
-static int
-lustre_dissect_element_llog_orphan_rec_lor_tail(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
-{
- //offset=lustre_dissect_struct_HASH(0x85d8550)(tvb,offset,pinfo,tree,hf_lustre_llog_orphan_rec_lor_tail);
- return offset;
-}
-
-int
-lustre_dissect_struct_llog_orphan_rec(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_)
-{
- proto_item *item = NULL;
- proto_tree *tree = NULL;
- int old_offset;
-
-
-
- old_offset=offset;
-
- if (parent_tree) {
- item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- tree = proto_item_add_subtree(item, ett_lustre_llog_orphan_rec);
- }
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_hdr(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_oid(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_ogen(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_padding(tvb, offset, pinfo, tree);
-
- offset=lustre_dissect_element_llog_orphan_rec_lor_tail(tvb, offset, pinfo, tree);
-
-
- proto_item_set_len(item, offset-old_offset);
-
- return offset;
-}
proto_tree *tree = NULL;
int old_offset;
-
-
old_offset=offset;
if (parent_tree) {
offset=lustre_dissect_element_llog_log_hdr_llh_tail(tvb, offset, pinfo, tree);
-
proto_item_set_len(item, offset-old_offset);
return offset;
return offset;
}
+int
+lustre_dissect_struct_lquota_id(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_,
+ int hf_index _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+
+ old_offset=offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_lquota_id);
+ }
+
+ offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_qid_fid);
+ offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_uid);
+ offset=dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qid_gid);
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+int
+lustre_dissect_struct_quota_body(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_,
+ int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_quota_body);
+ }
+
+ offset = lustre_dissect_struct_lu_fid(tvb, offset, pinfo, tree, hf_lustre_qb_fid);
+ offset = lustre_dissect_struct_lquota_id(tvb, offset, pinfo, tree, hf_lustre_qb_id);
+ offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_flags);
+ offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_qb_padding);
+ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_count);
+ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_usage);
+ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_qb_slv_ver);
+ offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree,
+ hf_lustre_qb_lockh);
+ offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree,
+ hf_lustre_qb_glb_lockh);
+ offset = lustre_dissect_struct_element_data(tvb, offset, pinfo, tree,
+ hf_lustre_qb_padding, 32);
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+int
+lustre_dissect_struct_layout_intent(tvbuff_t *tvb _U_, int offset _U_,
+ packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_,
+ int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_layout_intent);
+ }
+
+ offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_opc);
+ offset = dissect_uint32(tvb, offset, pinfo, tree, hf_lustre_layout_intent_flags);
+ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_start);
+ offset = dissect_uint64(tvb, offset, pinfo, tree, hf_lustre_layout_intent_end);
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
int
lustre_dissect_struct_acl(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
return offset;
}
+/* struct close_data { */
+/* struct lustre_handle cd_handle; */
+/* struct lu_fid cd_fid; */
+/* __u64 cd_data_version; */
+/* __u64 cd_reserved[8]; */
+/* }; */
+static int
+lustre_dissect_struct_close_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_close_data);
+ }
+
+ offset=lustre_dissect_element_handle_cookie(tvb,offset,pinfo,tree);
+ offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_close_fid);
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_close_data_ver);
+ offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_close_reserved,8*sizeof(guint64));
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+
+ return offset;
+}
+
+static int
+lustre_dissect_element_mds_getinfo_vallen(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ int data_len;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ offset=dissect_uint32(tvb, offset, pinfo, tree, hf_index);
+
+ offset=add_extra_padding(tvb,offset,pinfo,tree);
+
+ return offset;
+}
+
+
+/* ------------------------------------------------------------------------- *
+ * HSM Dissection
+ *
+ * struct hsm_request {
+ * __u32 hr_action; /\* enum hsm_user_action *\/
+ * __u32 hr_archive_id; /\* archive id, used only with HUA_ARCHIVE *\/
+ * __u64 hr_flags; /\* request flags *\/
+ * __u32 hr_itemcount; /\* item count in hur_user_item vector *\/
+ * __u32 hr_data_len;
+ */
+
+int
+lustre_dissect_element_hsm_req_action(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_)
+{
+ offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_action);
+ return offset;
+}
+
+int
+lustre_dissect_element_hsm_req_flags(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_)
+{
+ /* TODO - pick apart request flags - HSM_FORCE_ACTION, HSM_GHOST_COPY */
+ offset=dissect_uint64(tvb,offset,pinfo,parent_tree,hf_lustre_hsm_req_flags);
+ return offset;
+}
+
+static int
+lustre_dissect_struct_hsm_request(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+ guint32 action;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_hsm_request);
+ }
+
+ action=tvb_get_letohl(tvb,offset);
+ display_info_fstr(parent_tree->parent, pinfo->cinfo, COL_INFO, "[%s]", val_to_str(action, lustre_hsm_user_action_t_vals, "Unknown cr_opc"));
+
+ offset=lustre_dissect_element_hsm_req_action(tvb,offset,pinfo,tree);
+
+ offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_archive_id);
+
+ offset=lustre_dissect_element_hsm_req_flags(tvb,offset,pinfo,tree);
+
+ offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_itemcount);
+
+ offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_req_data_len);
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+/* struct hsm_extent { */
+/* __u64 offset; */
+/* __u64 length; */
+/* } */
+static int
+lustre_dissect_struct_hsm_extent(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+
+ old_offset=offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_hsm_extent);
+ }
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_offset);
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_extent_length);
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+/* struct hsm_user_item { */
+/* struct lu_fid hui_fid; */
+/* struct hsm_extent hui_extent; */
+/* } __attribute__((packed)); */
+static int
+lustre_dissect_struct_hsm_user_item(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_hsm_user_item);
+ }
+
+ offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_fid);
+
+ offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_user_item_extent);
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+/* struct hsm_progress_kernel { */
+/* struct lu_fid hpk_fid; */
+/* __u64 hpk_cookie; */
+/* struct hsm_extent hpk_extent; */
+/* __u16 hpk_flags; */
+/* __u16 hpk_errval; */
+/* __u32 hpk_padding1; */
+/* __u64 hpk_data_version; */
+/* __u64 hpk_padding2; */
+/* } __attribute__((packed)); */
+static int
+lustre_dissect_struct_hsm_progress(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_hsm_progress);
+ }
+
+ offset=lustre_dissect_struct_lu_fid(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_fid);
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_cookie);
+
+ offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_extent);
+
+ offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_flags);
+
+ offset=dissect_uint16(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_errval);
+
+ offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_extra_padding);
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_hsm_prog_data_ver);
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_extra_padding);
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+static int
+lustre_dissect_struct_element_states(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_)
+{
+ offset=dissect_uint32(tvb,offset,pinfo,parent_tree,hf_index);
+ return offset;
+}
+
+/* struct hsm_user_state { */
+/* ** Current HSM states, from enum hsm_states. */
+/* __u32 hus_states; */
+/* __u32 hus_archive_id; */
+/* ** The current undergoing action, if there is one */
+/* __u32 hus_in_progress_state; */
+/* __u32 hus_in_progress_action; */
+/* struct hsm_extent hus_in_progress_location; */
+/* char hus_extended_info[]; */
+/* }; */
+static int
+lustre_dissect_struct_hsm_user_state(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_hsm_user_state);
+ }
+
+ offset=lustre_dissect_struct_element_states(tvb,offset,pinfo,tree,hf_lustre_hsm_us_states);
+ offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_archive_id);
+ offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_state);
+ offset=dissect_uint32(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_action);
+ offset=lustre_dissect_struct_hsm_extent(tvb,offset,pinfo,tree,hf_lustre_hsm_us_in_prog_location);
+ offset=lustre_dissect_struct_element_data(tvb,offset,pinfo,tree,hf_lustre_hsm_us_ext_info,
+ (data_len-(offset-old_offset)));
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
/* ------------------------------------------------------------------------- */
/* dissect string .
* determine the string length), must respect : 0<bufnum<=bufmax_in_paquet
*/
static int
+lustre_dissect_element_filename (tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ int old_offset;
+ guint32 string_len;
+
+ old_offset = offset;
+
+ string_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (string_len == 0)
+ return offset;
+
+ item = proto_tree_add_item(parent_tree, hf_index, tvb,
+ offset, string_len, TRUE);
+ if (string_len > 1) {
+#ifdef WIRESHARK_COMPAT
+ display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO,
+ " filename : %s",
+ (const gchar *)tvb_get_string(tvb, offset,
+ string_len));
+#else
+ display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO,
+ " filename : %s",
+ (const gchar *)tvb_get_string_enc(wmem_packet_scope(),
+ tvb, offset,
+ string_len,
+ ENC_ASCII));
+#endif
+ }
+
+ offset += string_len;
+ proto_item_set_len(item, offset-old_offset);
+ offset = add_extra_padding(tvb, offset, pinfo, parent_tree);
+
+ return offset;
+}
+
+static int
lustre_dissect_element_string (tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
{
proto_item *item = NULL;
old_offset=offset;
- /* if (parent_tree) {
- * item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
- * tree = proto_item_add_subtree(item, ett_lustre);
- * }
- */
-
string_len = LUSTRE_BUFFER_LEN(buf_num);
if(string_len == 0)
return offset;
- /* g_print("buf_num:%d (max:%d) BUFLEN_OFF:%#x strlen:%d\n",
- buf_num, LUSTRE_BUFCOUNT,
- LUSTRE_BUFLEN_OFF, string_len);*/
-
- proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE);
- if(string_len>1)
- display_info_fstr(parent_tree, pinfo->cinfo, COL_INFO, " filename : %s",
- (const gchar *) tvb_get_string(tvb,offset,string_len) );
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE);
offset+=string_len;
proto_item_set_len(item, offset-old_offset);
return offset;
}
-
/* ------------------------------------------------------------------------- */
+static int
+lustre_dissect_raw_nstr(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_,
+ guint32 max_len _U_)
+{
+ proto_item *item = NULL;
+ int old_offset, string_len;
+ char c;
+
+ old_offset = offset;
+
+ string_len = -1;
+ do {
+ ++ string_len;
+ c = tvb_get_guint8(tvb, offset + string_len);
+ } while (string_len < max_len && c != '\0');
+
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, string_len, TRUE);
+ offset += string_len+1;
+ proto_item_set_len(item, offset-old_offset);
+ return offset;
+}
+
+static int
+lustre_dissect_raw_data(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_,
+ guint32 length _U_)
+{
+ proto_item *item = NULL;
+
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, length, TRUE);
+ proto_item_set_len(item, length);
+ return offset+length;
+}
+
+int
+lustre_dissect_xattr_eavals(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *parent_tree _U_, guint32 buff_num)
+{
+ /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] *
+ * array length == sizeof(eavals_lens)/sizeof(uint32)
+ * Buff 1: array of strings (name of xattr)
+ * Buff 2: array of data (data of xattr)
+ * Buff 3: array of data lengths (in buff 2)
+ */
+ int count, i, size;
+ int namestart, datastart, lenstart, namelen, datalen, lenlen;
+ int nameoffset, dataoffset;
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+
+ namelen = LUSTRE_BUFFER_LEN(buff_num);
+ datalen = LUSTRE_BUFFER_LEN(buff_num+1);
+ lenlen = LUSTRE_BUFFER_LEN(buff_num+2);
+
+ count = lenlen / sizeof(guint32);
+
+ namestart = nameoffset = offset;
+ datastart = namestart + namelen;
+ datastart += (8- datastart%8)%8;
+ dataoffset = datastart;
+ lenstart = datastart + datalen;
+ lenstart += (8- lenstart%8)%8;
+
+ item = proto_tree_add_item(parent_tree, hf_lustre_xattrs, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_xattrs);
+
+ for (i = 0; i < count; ++i) {
+ int sizeoffset;
+ sizeoffset = lenstart + sizeof(guint32)*i;
+ size = tvb_get_letohl(tvb, sizeoffset);
+
+ nameoffset = lustre_dissect_raw_nstr(tvb, nameoffset, pinfo, tree,
+ hf_lustre_xattrs_name,
+ (namestart+namelen)-nameoffset);
+ dataoffset = lustre_dissect_raw_data(tvb, dataoffset, pinfo, tree,
+ hf_lustre_xattrs_data, size);
+ dissect_uint32(tvb, sizeoffset, pinfo, tree, hf_lustre_xattrs_size);
+ }
+
+ offset = lenstart + lenlen;
+ offset += (8- offset%8)%8;
+ proto_item_set_len(item, offset-namestart);
+ return offset;
+}
/* Process REINT opcode requests */
/* [rec_create][filename][tgt.. Ã 0 pour l'instant][ldlm_request] */
offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create);
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2);
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2);
/* REINT_CREATE_SLAVE / SYM / RMT_ACL */
if (LUSTRE_BUFCOUNT > 4) {
/* for CREATE_SYM this is actually name of target - encoded in mdt_rec_create.cr_mode */
offset=lustre_dissect_struct_mdt_rec_link(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_link);
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1);
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3);
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3);
if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0)
offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
break;
offset=lustre_dissect_struct_obd_quotactl(tvb, offset, pinfo, tree, hf_lustre_obd_quotactl);
} else {
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2);
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+2);
offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
}
break;
offset=lustre_dissect_struct_mdt_rec_rename(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_rename);
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1);
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+4);
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_old_name, LUSTRE_REQ_REC_OFF+3);
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_new_name, LUSTRE_REQ_REC_OFF+4);
if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+5) > 0)
offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
break;
case REINT_OPEN: /* [rec_create][filename][eadata] */
offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_create);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name, LUSTRE_REQ_REC_OFF+1);
offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata, LUSTRE_REQ_REC_OFF+2);
break;
case REINT_SETXATTR:
- /* 2.x+ [rec_setxattr][capa1][name][eadata] */
+ /* 2.x+ [rec_setxattr][capa1][name][eadata][dlm_req] */
/* old? [rec_setxattr][ldlm_request] */
offset=lustre_dissect_struct_mdt_rec_setxattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setxattr);
if (LUSTRE_BUFCOUNT > 2) {
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
hf_lustre_capa, LUSTRE_REQ_REC_OFF+1);
offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_name, LUSTRE_REQ_REC_OFF+2);
- offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata,
+ offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mds_xattr_eadata_str,
LUSTRE_REQ_REC_OFF+3);
if (LUSTRE_BUFFER_LEN(LUSTRE_REQ_REC_OFF+4) > 0)
- offset=lustre_dissect_struct_llog_cookie(tvb,offset,pinfo,tree,hf_lustre_llog_cookie);
+ offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
} else if (LUSTRE_BUFCOUNT == 2)
offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree,
hf_lustre_ldlm_request);
break;
- default:
- break;
-
}
return offset ;
static int
lustre_dissect_generic_connect(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree *tree _U_)
{
- /*TODO : add a cuuid and target uid */
- offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid);
- offset=lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree, hf_lustre_obd_uuid);
- offset=lustre_dissect_struct_handle_cookie(tvb,offset,pinfo,tree,hf_lustre_mdt_body_handle);
- offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+ /*TODO : add a cuuid and target uid */
+ offset = lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree,
+ hf_lustre_obd_uuid);
+ offset = lustre_dissect_struct_obd_uuid(tvb, offset, pinfo, tree,
+ hf_lustre_obd_uuid);
+ offset = lustre_dissect_struct_handle_cookie(tvb, offset, pinfo, tree,
+ hf_lustre_mdt_body_handle);
+ offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo,
+ tree, hf_lustre_obd_connect_data, 4);
+ return offset;
+}
+
+int
+lustre_dissect_struct_lu_ladvise(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
+ proto_tree *parent_tree _U_, int hf_index _U_, guint32 buf_num)
+{
+ proto_item *item = NULL;
+ proto_tree *tree = NULL;
+ int old_offset;
+ int data_len;
+
+ old_offset=offset;
+
+ data_len = LUSTRE_BUFFER_LEN(buf_num);
+ if (data_len == 0)
+ return offset;
+
+ if (parent_tree) {
+ item = proto_tree_add_item(parent_tree, hf_index, tvb, offset, -1, TRUE);
+ tree = proto_item_add_subtree(item, ett_lustre_ladvise);
+ }
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_start);
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_end);
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_advice);
+
+ offset=dissect_uint64(tvb,offset,pinfo,tree,hf_lustre_lu_ladvise_lla_padding);
+
+ if (item)
+ proto_item_set_len(item, offset-old_offset);
return offset;
}
break;
case OST_GET_INFO:
if(pb_type==PTL_RPC_MSG_REQUEST) /* [key] */
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF);
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF);
if (pb_type==PTL_RPC_MSG_REPLY)
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF); /* val */
break;
case OST_CONNECT:
if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);
if (pb_type==PTL_RPC_MSG_REPLY)
- offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+ offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo,
+ tree, hf_lustre_obd_connect_data, 1);
break;
case OST_DISCONNECT: /* [nothing] */
break;
case OST_SET_INFO:
if(pb_type==PTL_RPC_MSG_REQUEST)
{
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF); /* key */
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_ost_key, LUSTRE_REQ_REC_OFF); /* key */
offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ost_val, LUSTRE_REQ_REC_OFF+1); /* val */
}
/* if Key = "evict_by_nid" --> need to be process.. TODO */
case OST_QUOTA_ADJUST_QUNIT:
/* [quota_adjust_qunit] in both case ? */
offset=lustre_dissect_struct_quota_adjust_qunit(tvb, offset, pinfo, tree, hf_lustre_quota_adjust_qunit) ;
+ case OST_LADVISE:
+ /*[ost_body] in both case */
+ offset=lustre_dissect_struct_ost_body(tvb, offset, pinfo, tree, hf_lustre_ost_body) ;
+ if (pb_type == PTL_RPC_MSG_REQUEST) {
+ offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+1);
+ offset=lustre_dissect_struct_lu_ladvise(tvb, offset, pinfo, tree, hf_lustre_lu_ladvise, LUSTRE_REQ_REC_OFF+2);
+ }
+ break;
};
return offset;
}
static int
lustre_mds_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_, proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type)
{
+ int i;
switch (opc){
case MDS_DISCONNECT:
/*[nothing]*/
break;
- case MDS_GETSTATUS:
+ case MDS_GET_ROOT:
/*request: [mds body]*/
/*reply: [mds body][capa] */
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
case MDS_GETATTR:
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body);
if (pb_type == PTL_RPC_MSG_REPLY) { /* [mdt_md][acl][capa1][capa2] */
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree,
+ offset=lustre_dissect_struct_lov_mds_md(tvb, offset, pinfo, tree,
hf_lustre_mds_md_data,
LUSTRE_REPLY_REC_OFF+1);
offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree,
offset=lustre_dissect_struct_mdt_rec_setattr(tvb, offset, pinfo, tree, hf_lustre_mdt_rec_setattr);
offset=lustre_dissect_struct_capa(tvb,offset,pinfo,tree, hf_lustre_capa, LUSTRE_REQ_REC_OFF+2);
+ offset=lustre_dissect_struct_close_data(tvb,offset,pinfo,tree, hf_lustre_close_data, LUSTRE_REQ_REC_OFF+3);
}
if(pb_type==PTL_RPC_MSG_REPLY)
{ /* [mdt_body][md][cookie][capa1][capa2] */
/* [mdt_body][mdt_md][??][capa1][capa2] */
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
- offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1, LUSTRE_REPLY_REC_OFF+1);
+ offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data, LUSTRE_REPLY_REC_OFF+1);
if(LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF+2) > 0)
/* open : ...[ACL]...
if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);
if (pb_type==PTL_RPC_MSG_REPLY || pb_type == PTL_RPC_MSG_ERR) /*[obd_connect_data]*/
- offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+ offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo,
+ tree, hf_lustre_obd_connect_data, 1);
+ break;
+ case MDS_HSM_REQUEST:
+ /* [mdt_body][hsm_request][array of hsm_user_item][generic_data] */
+ if (pb_type==PTL_RPC_MSG_REQUEST) {
+ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body);
+ offset=lustre_dissect_struct_hsm_request(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1);
+ for(i = LUSTRE_REQ_REC_OFF+2; i < LUSTRE_BUFCOUNT-1; ++i) {
+ offset=lustre_dissect_struct_hsm_user_item(tvb, offset, pinfo, tree, hf_lustre_hsm_user_item, i);
+ }
+ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_generic_data, LUSTRE_REQ_REC_OFF+3);
+ }
break;
+ case MDS_HSM_PROGRESS:
+ /* [mdt_body][hsm_progress] */
+ if (pb_type==PTL_RPC_MSG_REQUEST) {
+ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body);
+ offset=lustre_dissect_struct_hsm_progress(tvb, offset, pinfo, tree, hf_lustre_hsm_request, LUSTRE_REQ_REC_OFF+1);
+ }
+ break;
+ case MDS_HSM_STATE_GET:
+ offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body);
+ if (pb_type==PTL_RPC_MSG_REPLY)
+ /* ...[hsm_user_state] */
+ offset=lustre_dissect_struct_hsm_user_state(tvb, offset, pinfo, tree, hf_lustre_hsm_state_get, LUSTRE_REQ_REC_OFF+1);
+ break;
+ case MDS_GET_INFO:
+ if (pb_type == PTL_RPC_MSG_REQUEST) {
+ offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_key, LUSTRE_REQ_REC_OFF);
+ offset=lustre_dissect_element_mds_getinfo_vallen(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_vallen, LUSTRE_REQ_REC_OFF+1);
+ }
+ if (pb_type == PTL_RPC_MSG_REPLY)
+ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_mdt_getinfo_data, LUSTRE_REQ_REC_OFF);
default:
break;
};
}
if (pb_type==PTL_RPC_MSG_REPLY) {
guint32 ldlm_type;
- /*[ldlm_reply]*/
+
+ /* [ldlm_reply] */
offset=lustre_dissect_struct_ldlm_reply(tvb, offset, pinfo, tree,
hf_lustre_ldlm_reply,
&ldlm_type);
+ /* Generic Reply:
+ * [mdt_body][mdt_md][acl]
+ * CREATE or GETATTR:
+ * [mdt_body][mdt_md][acl][capa1]
+ * OPEN:
+ * [mdt_body][mdt_md][acl][capa1][capa2]
+ * GETXATTR:
+ * [mdt_body][mdt_md][acl][eadata][eavals][eavals_lens]
+ *
+ * LAYOUT:
+ * [dlm_lvb]
+ * QUOTA:
+ * [dlm_lvb][quota_body]
+ */
+
/* check if we're done processing */
if (LUSTRE_BUFCOUNT <= 2)
break;
- if (LUSTRE_BUFFER_LEN(LUSTRE_REPLY_REC_OFF) == 40)
+ /* LAYOUT and QUOTA */
+ if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) == 40) {
/* TODO :this code need to be check and test, the
* lustre corresponding code isn't explicit, so not
* sure to have this buffer, but in example it works
* fine
*/
offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree,
- hf_lustre_ost_lvb);
+ hf_lustre_ost_lvb,
+ LUSTRE_DLM_REPLY_REC_OFF);
+ if (LUSTRE_BUFCOUNT == 3)
+ break;
+ offset = lustre_dissect_struct_quota_body(tvb, offset,
+ pinfo, tree, hf_lustre_qb,
+ LUSTRE_DLM_REPLY_REC_OFF+1);
+ break;
- else if (ldlm_type == LDLM_EXTENT) {
- offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1,
- LUSTRE_DLM_REPLY_REC_OFF);
+ } else if ((ldlm_type == LDLM_EXTENT) || (LUSTRE_BUFCOUNT == 3)) {
+ int magic;
+ // ??
+ magic=tvb_get_letohl(tvb, offset);
+ if (magic == LOV_MAGIC_V1)
+ offset = lustre_dissect_struct_lov_mds_md_v1(tvb, offset,
+ pinfo, tree, hf_lustre_lov_mds_md_v1);
+ else
+ offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo,
+ tree, hf_lustre_ost_lvb,
+ LUSTRE_DLM_REPLY_REC_OFF+1);
break;
}
if (LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0)
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree,
hf_lustre_mdt_body);
- offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_lov_mds_md_v1,
- LUSTRE_DLM_INTENT_REC_OFF);
+ offset=lustre_dissect_struct_lov_mds_md(tvb,offset,pinfo,tree,hf_lustre_mds_md_data,
+ LUSTRE_DLM_REPLY_REC_OFF+1);
/* ldlm_intent_server : ACL */
offset=lustre_dissect_struct_acl(tvb, offset, pinfo, tree,
- hf_lustre_acl, LUSTRE_DLM_INTENT_REC_OFF+1);
-
- /* ldlm_intent_open_server : [capa1][capa2] */
- offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
- hf_lustre_capa, LUSTRE_DLM_INTENT_REC_OFF+2);
- offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
- hf_lustre_capa, LUSTRE_DLM_INTENT_REC_OFF+3);
+ hf_lustre_acl, LUSTRE_DLM_REPLY_REC_OFF+2);
+
+ if (LUSTRE_BUFCOUNT == 8) {
+ /* ldlm_intent_getxattr_server : [eadata][eavals][eavals_lens] */
+ offset = lustre_dissect_xattr_eavals(tvb, offset, pinfo, tree,
+ LUSTRE_DLM_REPLY_REC_OFF+3);
+ break;
+
+ } else if (LUSTRE_BUFCOUNT >= 6) {
+ /* ldlm_intent_open_server : [capa1][capa2] */
+ /* ldlm_intent_open_server : [capa1] */
+ offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
+ hf_lustre_capa,
+ LUSTRE_DLM_REPLY_REC_OFF+3);
+ offset = lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
+ hf_lustre_capa,
+ LUSTRE_DLM_REPLY_REC_OFF+4);
+ }
}
break;
/*[ldlm_request] if the third buffer exist we have [lvb data] so it's [ost_lvb] : TODO :
* check that */
offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- if(LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0)
- offset=lustre_dissect_struct_ost_lvb(tvb,offset,pinfo,tree,hf_lustre_ost_lvb);
+ offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb,
+ LUSTRE_DLM_REPLY_REC_OFF);
}
/*reply : [nothing] */
break;
case LDLM_GL_CALLBACK:
if(pb_type==PTL_RPC_MSG_REQUEST) { /*[ldlm_request] [lvb (for gl_desc)]*/
offset=lustre_dissect_struct_ldlm_request(tvb, offset, pinfo, tree, hf_lustre_ldlm_request) ;
- if(LUSTRE_BUFFER_LEN(LUSTRE_DLM_REPLY_REC_OFF) > 0)
- offset=lustre_dissect_struct_ost_lvb(tvb,offset,pinfo,tree,hf_lustre_ost_lvb);
+ offset = lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb,
+ LUSTRE_REQ_REC_OFF+1);
}
if(pb_type==PTL_RPC_MSG_REPLY) /* [ost_lvb] */
- offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree, hf_lustre_ost_lvb);
+ offset=lustre_dissect_struct_ost_lvb(tvb, offset, pinfo, tree,
+ hf_lustre_ost_lvb,
+ LUSTRE_REPLY_REC_OFF);
break;
+ case LDLM_SET_INFO:
+ /* ? [key-string][value-data] */
+ if(pb_type==PTL_RPC_MSG_REQUEST) {
+ offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_ldlm_key, LUSTRE_REQ_REC_OFF); /* key */
+ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree, hf_lustre_ldlm_value, LUSTRE_REQ_REC_OFF+1); /* value */
+ }
+ break;
default :
break;
}
switch (opc){
case MGS_CONNECT :
if (pb_type==PTL_RPC_MSG_REQUEST) /* [targetuuid][clientuuid][lustre_handle][obd_connect_data] */
- offset=lustre_dissect_generic_connect(tvb,offset,pinfo,tree);
+ offset = lustre_dissect_generic_connect(tvb, offset, pinfo, tree);
if (pb_type==PTL_RPC_MSG_REPLY) /*[obd_connect_data]*/
- offset=lustre_dissect_struct_obd_connect_data(tvb,offset,pinfo,tree,hf_lustre_obd_connect_data);
+ offset = lustre_dissect_struct_obd_connect_data(tvb, offset, pinfo,
+ tree, hf_lustre_obd_connect_data, 1);
break;
case MGS_DISCONNECT :
/*[nothing]*/
offset=lustre_dissect_struct_llogd_body(tvb, offset, pinfo, tree, hf_lustre_llogd_body);
if(pb_type==PTL_RPC_MSG_REQUEST) /* [filename] */
if (LUSTRE_BUFCOUNT>2)
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_name,
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_llogd_name,
LUSTRE_REQ_REC_OFF+1);
break;
case LLOG_ORIGIN_HANDLE_NEXT_BLOCK :/* in handler.c */
/* [keyword][if keyword=config [char*] else [nothing]] */
offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_keyword,
LUSTRE_REQ_REC_OFF);
- if (strcmp((const char *)tvb_get_string(tvb, LUSTRE_REQ_REC_OFF,
+ /* if (keyword == "config") */
+ if (strcmp(
+#ifdef WIRESHARK_COMPAT
+ (const char *)tvb_get_string(tvb, LUSTRE_REQ_REC_OFF,
tvb_get_letohl(tvb,
LUSTRE_BUFLEN_OFF + 4 *
LUSTRE_REQ_REC_OFF)),
+#else
+ (const char *)tvb_get_string_enc(wmem_packet_scope(), tvb,
+ LUSTRE_REQ_REC_OFF,
+ tvb_get_letohl(tvb,
+ LUSTRE_BUFLEN_OFF + 4 *
+ LUSTRE_REQ_REC_OFF),
+ ENC_ASCII),
+#endif
"config") == 0)
- /* if(keyword == "config") */
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_llogd_client,
- LUSTRE_REQ_REC_OFF+1);
+ offset = lustre_dissect_element_string(tvb, offset, pinfo, tree,
+ hf_lustre_llogd_client,
+ LUSTRE_REQ_REC_OFF+1);
}
if(pb_type==PTL_RPC_MSG_REPLY)
/*[buf] sizeof = llog_chunk_size*/
lustre_seq_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type)
{
- switch (opc) {
- case SEQ_QUERY:
- if (pb_type == PTL_RPC_MSG_REQUEST)
- offset=lustre_dissect_struct_seq(tvb, offset, pinfo, tree, hf_lustre_seq_opc);
- offset=lustre_dissect_struct_seq_range(tvb, offset, pinfo, tree);
- break;
-
- default:
- g_print("error: SEQ Opcode: %d unknown\n", opc);
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
- break;
- };
+ switch (opc) {
+ case SEQ_QUERY:
+ if (pb_type == PTL_RPC_MSG_REQUEST)
+ offset = lustre_dissect_struct_seq(tvb, offset, pinfo,
+ tree, hf_lustre_seq_opc);
+ offset = lustre_dissect_struct_seq_range(tvb, offset,
+ pinfo, tree);
+ break;
+
+ default:
+ g_print("error: SEQ Opcode: %d unknown\n", opc);
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
+ break;
+ };
- return offset;
+ return offset;
}
static int
lustre_fld_opcode_process(tvbuff_t *tvb _U_, int offset _U_, packet_info *pinfo _U_,
proto_tree * tree _U_, guint32 opc _U_, guint32 pb_type)
{
- switch (opc) {
- case FLD_QUERY:
- if (pb_type == PTL_RPC_MSG_REQUEST)
- offset=lustre_dissect_struct_seq(tvb, offset, pinfo, tree, hf_lustre_fld_opc);
- offset=lustre_dissect_struct_seq_range(tvb, offset, pinfo, tree);
- break;
-
- default:
- g_print("error: FLD Opcode: %d unknown\n", opc);
- if (check_col(pinfo->cinfo, COL_INFO))
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
- break;
- };
+ switch (opc) {
+ case FLD_QUERY:
+ if (pb_type == PTL_RPC_MSG_REQUEST)
+ offset = lustre_dissect_struct_seq(tvb, offset, pinfo,
+ tree, hf_lustre_fld_opc);
+ offset = lustre_dissect_struct_seq_range(tvb, offset,
+ pinfo, tree);
+ break;
+
+ default:
+ g_print("error: FLD Opcode: %d unknown\n", opc);
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
+ break;
+ };
- return offset;
+ return offset;
}
/* mdc_intent_open_pack(), d'où [opcode][mdc_rec_create][capa1][capa2][name][eada] */
offset=lustre_dissect_struct_mdt_rec_create(tvb, offset, pinfo, tree,
hf_lustre_mdt_rec_create);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree,
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree,
hf_lustre_reint_name,
LUSTRE_DLM_INTENT_REC_OFF+3);
offset=lustre_dissect_element_data(tvb, offset, pinfo, tree,
hf_lustre_mdt_rec_unlink);
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa,
LUSTRE_DLM_INTENT_REC_OFF+1);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree,
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree,
hf_lustre_reint_name,
LUSTRE_DLM_INTENT_REC_OFF+2);
}
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body) ;
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa,
LUSTRE_DLM_INTENT_REC_OFF+1);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name,
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name,
LUSTRE_DLM_INTENT_REC_OFF+2);
}
offset=lustre_dissect_struct_mdt_body(tvb, offset, pinfo, tree, hf_lustre_mdt_body);
offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree, hf_lustre_capa,
LUSTRE_DLM_INTENT_REC_OFF+1);
- offset=lustre_dissect_element_string(tvb, offset, pinfo, tree, hf_lustre_reint_name,
+ offset=lustre_dissect_element_filename(tvb, offset, pinfo, tree, hf_lustre_reint_name,
LUSTRE_DLM_INTENT_REC_OFF+2);
}
+ if (intent_opc & IT_LAYOUT) {
+ /* [layout_intent][eadata] */
+ offset = lustre_dissect_struct_layout_intent(tvb, offset,
+ pinfo, tree, hf_lustre_layout_intent,
+ LUSTRE_DLM_INTENT_REC_OFF);
+ offset=lustre_dissect_element_data(tvb, offset, pinfo, tree,
+ hf_lustre_mds_xattr_eadata,
+ LUSTRE_DLM_INTENT_REC_OFF+1);
+ }
+ if (intent_opc & IT_QUOTA_DQACQ) {
+ offset = lustre_dissect_struct_quota_body(tvb, offset,
+ pinfo, tree, hf_lustre_qb,
+ LUSTRE_DLM_INTENT_REC_OFF);
+ }
+ if (intent_opc & IT_GETXATTR) {
+ /* [mdt_body][capa] */
+ offset = lustre_dissect_struct_mdt_body(tvb, offset, pinfo,
+ tree, hf_lustre_mdt_body);
+ offset=lustre_dissect_struct_capa(tvb, offset, pinfo, tree,
+ hf_lustre_capa,
+ LUSTRE_DLM_INTENT_REC_OFF+1);
+ }
return offset;
}
count in buflen
*/
- if(val_offset!=somme_buflen){
- /*g_print("somme_buflen=%d, val_offset = %d \n",somme_buflen,val_offset);*/
- if (check_col(pinfo->cinfo, COL_INFO)) {
- col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
- }
- }
-
+ if (val_offset != somme_buflen)
+ col_append_str(pinfo->cinfo, COL_PROTOCOL, "BUG");
}
static void
dissect_lustre(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- if (check_col(pinfo->cinfo, COL_PROTOCOL))
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lustre");
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "Lustre");
- /*light display*/
- if (check_col(pinfo->cinfo, COL_INFO))
- col_set_str(pinfo->cinfo, COL_INFO, "");
+ /*light display*/
+ col_set_str(pinfo->cinfo, COL_INFO, "");
/* guint32 magic_number ; */
/* magic_number = tvb_get_letohl(tvb, LUSTRE_MAGIC_OFFSET); */
/* switch (magic_number)*/
{ &hf_lustre_mdt_body_handle,
{ "Handle", "lustre.mdt_body.handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_mdt_body_valid,
- { "Valid", "lustre.mdt_body.valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Valid", "lustre.mdt_body.valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_body_size,
{ "Size", "lustre.mdt_body.size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_body_mtime,
{ &hf_lustre_mdt_rec_setattr,
{ "mdt rec setattr", "lustre.mdt_rec_setattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
{ &hf_lustre_mdt_rec_setattr_sa_opcode,
- { "Sa Opcode", "lustre.mdt_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }},
+ { "Sa Opcode", "lustre.mdt_rec_setattr.sa_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setattr_sa_cap,
{ "Sa Cap", "lustre.mdt_rec_setattr.sa_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setattr_sa_fsuid,
{ &hf_lustre_mdt_rec_setattr_sa_ctime,
{ "Sa Ctime", "lustre.mdt_rec_setattr.sa_ctime",FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } },
{ &hf_lustre_mdt_rec_setattr_sa_attr_flags,
- { "Sa Attr Flags", "lustre.mdt_rec_setattr.sa_attr_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Sa Attr Flags", "lustre.mdt_rec_setattr.sa_attr_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setattr_sa_mode,
{ "Sa Mode", "lustre.mdt_rec_setattr.sa_mode", FT_UINT32, BASE_OCT, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setattr_sa_padding_2,
{ "Sa Padding 2", "lustre.mdt_rec_setattr.sa_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_mdt_rec_setattr_sa_padding_3,
- { "Sa Padding 3", "lustre.mdt_rec_setattr.sa_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_mdt_rec_setattr_sa_projid,
+ { "Sa Projid", "lustre.mdt_rec_setattr.sa_projid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setattr_sa_padding_4,
{ "Sa Padding 4", "lustre.mdt_rec_setattr.sa_padding_4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setattr_sa_padding_5,
{ &hf_lustre_mdt_rec_create,
{ "mdt rec create", "lustre.mdt_rec_create", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
{ &hf_lustre_mdt_rec_create_cr_opcode,
- { "Cr Opcode", "lustre.mdt_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }},
+ { "Cr Opcode", "lustre.mdt_rec_create.cr_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }},
{ &hf_lustre_mdt_rec_create_cr_cap,
{ "Cr Cap", "lustre.mdt_rec_create.cr_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_create_cr_fsuid,
{ &hf_lustre_mdt_rec_link,
{ "mdt rec link", "lustre.mdt_rec_link", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
{ &hf_lustre_mdt_rec_link_lk_opcode,
- { "Lk Opcode", "lustre.mdt_rec_link.lk_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
+ { "Lk Opcode", "lustre.mdt_rec_link.lk_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }},
{ &hf_lustre_mdt_rec_link_lk_cap,
{ "Lk Cap", "lustre.mdt_rec_link.lk_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_link_lk_fsuid,
{ &hf_lustre_mdt_rec_unlink,
{ "mdt rec unlink", "lustre.mdt_rec_unlink", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
{ &hf_lustre_mdt_rec_unlink_ul_opcode,
- { "Ul Opcode", "lustre.mdt_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
+ { "Ul Opcode", "lustre.mdt_rec_unlink.ul_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }},
{ &hf_lustre_mdt_rec_unlink_ul_cap,
{ "Ul Cap", "lustre.mdt_rec_unlink.ul_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_unlink_ul_fsuid,
{ &hf_lustre_mdt_rec_rename,
{ "mdt rec rename", "lustre.mdt_rec_rename", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
{ &hf_lustre_mdt_rec_rename_rn_opcode,
- { "Rn Opcode", "lustre.mdt_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals) , 0, "", HFILL }},
+ { "Rn Opcode", "lustre.mdt_rec_rename.rn_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals) , 0, "", HFILL }},
{ &hf_lustre_mdt_rec_rename_rn_cap,
{ "Rn Cap", "lustre.mdt_rec_rename.rn_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_rename_rn_fsuid,
{ &hf_lustre_mdt_rec_setxattr,
{ "mdt rec setxattr", "lustre.mdt_rec_setxattr", FT_NONE, BASE_NONE, NULL , 0 , "", HFILL}},
{ &hf_lustre_mdt_rec_setxattr_sx_opcode,
- { "Sx Opcode", "lustre.mdt_rec_setxattr.sx_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_t_vals), 0, "", HFILL }},
+ { "Sx Opcode", "lustre.mdt_rec_setxattr.sx_opcode", FT_UINT32, BASE_DEC, VALS(lustre_mds_reint_op_vals), 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setxattr_sx_cap,
{ "Sx Cap", "lustre.mdt_rec_setxattr.sx_cap", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setxattr_sx_fsuid,
{ &hf_lustre_mdt_rec_setxattr_sx_size,
{ "Sx Size", "lustre.mdt_rec_setxattr.sx_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setxattr_sx_flags,
- { "Sx Flags", "lustre.mdt_rec_setxattr.sx_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Sx Flags", "lustre.mdt_rec_setxattr.sx_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setxattr_sx_padding_8,
{ "Sx Padding 8", "lustre.mdt_rec_setxattr.sx_padding_8", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mdt_rec_setxattr_sx_padding_9,
{ "Sx Padding 11", "lustre.mdt_rec_setxattr.sx_padding_11", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_handle_cookie,
- { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Cookie", "lustre.lustre_handle.cookie", FT_UINT64, BASE_HEX,
+ NULL, 0, "", HFILL } },
{ &hf_lustre_ptlrpc_body_pb_last_committed,
{ "Pb Last Committed", "lustre.ptlrpc_body.pb_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ptlrpc_body_pb_version,
{ "Pb JobId", "lustre.ptlrpc_body.pb_jobid", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v1_lm_handle,
- { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
- { &hf_lustre_ost_lvb_lvb_atime,
- { "Lvb Atime", "lustre.ost_lvb.lvb_atime",FT_ABSOLUTE_TIME,
- ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } },
+ { "Lm Handle", "lustre.lustre_msg_v1.lm_handle", FT_NONE, BASE_NONE,
+ NULL, 0, "", HFILL } },
+ { &hf_lustre_ost_lvb_lvb_atime,
+ { "Lvb Atime", "lustre.ost_lvb.lvb_atime",
+ FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } },
{ &hf_lustre_ptlrpc_body_pb_timeout,
{ "Pb Timeout", "lustre.ptlrpc_body.pb_timeout", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_bavail,
{ "Os Bsize", "lustre.obd_statfs.os_bsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v2_lm_repsize,
{ "Lm Repsize", "lustre.lustre_msg_v2.lm_repsize", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1_lmm_stripe_size,
- { "Lmm Stripe Size", "lustre.lov_mds_md_v1.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v1_lm_last_xid,
{ "Lm Last Xid", "lustre.lustre_msg_v1.lm_last_xid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ll_fid_f_type,
- { "F Type", "lustre.ll_fid.f_type", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "F Type", "lustre.ll_fid.f_type", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v2_lm_cksum,
{ "Lm Cksum", "lustre.lustre_msg_v2.lm_cksum", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v2_lm_buflens,
{ "Lm Type", "lustre.lustre_msg_v1.lm_type", FT_UINT32, BASE_DEC, VALS(lustre_LMTypes), 0, "", HFILL }},
{ &hf_lustre_niobuf_remote_len,
{ "Len", "lustre.niobuf_remote.len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1_lmm_magic,
- { "Lmm Magic", "lustre.lov_mds_md_v1.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }},
{ &hf_lustre_ptlrpc_body_pb_op_flags,
- { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Pb Op Flags", "lustre.ptlrpc_body.pb_op_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ost_lvb_lvb_ctime,
{ "Lvb Ctime", "lustre.ost_lvb.lvb_ctime",FT_ABSOLUTE_TIME,
ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } },
{ &hf_lustre_obd_connect_data_ocd_nllu,
{ "Ocd Nllu", "lustre.obd_connect_data.ocd_nllu", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ll_fid_generation,
- { "Generation", "lustre.ll_fid.generation", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Generation", "lustre.ll_fid.generation", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ost_lvb_lvb_mtime,
{ "Lvb Mtime", "lustre.ost_lvb.lvb_mtime",FT_ABSOLUTE_TIME,
ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } },
+ { &hf_lustre_ost_lvb_lvb_mtime_ns,
+ { "Lvb Mtime NS", "lustre.ost_lvb.lvb_mtime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_ost_lvb_lvb_atime_ns,
+ { "Lvb Atime NS", "lustre.ost_lvb.lvb_atime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_ost_lvb_lvb_ctime_ns,
+ { "Lvb Ctime NS", "lustre.ost_lvb.lvb_ctime_ns", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_ost_lvb_lvb_padding,
+ { "padding", "lustre.ost_lvb.padding", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_connect_data_ocd_ibits_known,
{ "Ocd Ibits Known", "lustre.obd_connect_data.ocd_ibits_known", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v2_lm_padding_3,
{ "Lm Padding 3", "lustre.lustre_msg_v2.lm_padding_3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ptlrpc_body_pb_flags,
- { "Pb Flags", "lustre.ptlrpc_body.pb_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Pb Flags", "lustre.ptlrpc_body.pb_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_spare4,
{ "Os Spare4", "lustre.obd_statfs.os_spare4", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_connect_data_ocd_group,
{ "Ocd Group", "lustre.obd_connect_data.ocd_group", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lov_ost_data_v1_l_object_seq,
{ "L Object SEQ", "lustre.lov_ost_data_v1.l_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1_lmm_object_seq,
- { "Lmm Object SEQ", "lustre.lov_mds_md_v1.lmm_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_connect_data_ocd_brw_size,
{ "Ocd Brw Size", "lustre.obd_connect_data.ocd_brw_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ptlrpc_body_pb_limit,
{ &hf_lustre_obd_statfs_os_spare5,
{ "Os Spare5", "lustre.obd_statfs.os_spare5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v2_lm_flags,
- { "Lm Flags", "lustre.lustre_msg_v2.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Lm Flags", "lustre.lustre_msg_v2.lm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_ffree,
{ "Os Ffree", "lustre.obd_statfs.os_ffree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_files,
{ "Os Files", "lustre.obd_statfs.os_files", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1_lmm_stripe_count,
- { "Lmm Stripe Count", "lustre.lov_mds_md_v1.lmm_stripe_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v1_lm_flags,
- { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Lm Flags", "lustre.lustre_msg_v1.lm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v1_lm_last_committed,
{ "Lm Last Committed", "lustre.lustre_msg_v1.lm_last_committed", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_spare9,
{ &hf_lustre_ptlrpc_body_pb_opc,
{ "Pb Opc", "lustre.ptlrpc_body.pb_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }},
{ &hf_lustre_obd_connect_data_ocd_connect_flags,
- { "Ocd Connect Flags", "lustre.obd_connect_data.ocd_connect_flags", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Ocd Connect Flags", "lustre.obd_connect_data.ocd_connect_flags",
+ FT_UINT64 , BASE_HEX, NULL, 0, "", HFILL } },
{ &hf_lustre_lov_ost_data_v1_l_object_id,
{ "L Object Id", "lustre.lov_ost_data_v1.l_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lov_ost_data_v1_l_ost_gen,
{ "L Ost Gen", "lustre.lov_ost_data_v1.l_ost_gen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_bfree,
{ "Os Bfree", "lustre.obd_statfs.os_bfree", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_obd_connect_data_ocd_version,
- { "Ocd Version", "lustre.obd_connect_data.ocd_version", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1_lmm_objects,
- { "Lmm Objects", "lustre.lov_mds_md_v1.lmm_objects", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_obd_connect_data_ocd_version,
+ { "Ocd Version", "lustre.obd_connect_data.ocd_version",
+ FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_obd_statfs_os_namelen,
{ "Os Namelen", "lustre.obd_statfs.os_namelen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_blocks,
{ "Lm Secflvr", "lustre.lustre_msg_v2.lm_secflvr", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v1_lm_transno,
{ "Lm Transno", "lustre.lustre_msg_v1.lm_transno", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1_lmm_pattern,
- { "Lmm Pattern", "lustre.lov_mds_md_v1.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v1_lm_opc,
{ "Lm Opc", "lustre.lustre_msg_v1.lm_opc", FT_UINT32, BASE_DEC, VALS(lustre_op_codes), 0, "", HFILL }},
{ &hf_lustre_obd_connect_data_ocd_grant,
{ &hf_lustre_obd_statfs_os_fsid,
{ "Os Fsid", "lustre.obd_statfs.os_fsid", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_connect_data_ocd_cksum_types,
- { "Ocd Cksum Types", "lustre.obd_connect_data.ocd_cksum_types", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Ocd Cksum Types", "lustre.obd_connect_data.ocd_cksum_types",
+ FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_obd_connect_data_ocd_max_easize,
+ { "Ocd Max LOV EA Size", "lustre.obd_connect_data.ocd_max_easize",
+ FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_obd_connect_data_ocd_instance,
+ { "Ocd Instance", "lustre.obd_connect_data.ocd_instance",
+ FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_obd_connect_data_ocd_maxbytes,
+ { "Ocd Max Stripe Size (Bytes)",
+ "lustre.obd_connect_data.ocd_maxbytes",
+ FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_obd_connect_data_ocd_maxmodrpcs,
+ { "Ocd Max Parallel Modify RPCs",
+ "lustre.obd_connect_data.ocd_maxmodrpcs",
+ FT_UINT16, BASE_DEC, NULL, 0, "", HFILL } },
+
{ &hf_lustre_ost_lvb_lvb_size,
{ "Lvb Size", "lustre.ost_lvb.lvb_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_statfs_os_type,
{ "Os Spare3", "lustre.obd_statfs.os_spare3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v2_lm_magic,
{ "Lm Magic", "lustre.lustre_msg_v2.lm_magic", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1_lmm_object_id,
- { "Lmm Object Id", "lustre.lov_mds_md_v1.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ptlrpc_body_pb_last_seen,
{ "Pb Last Seen", "lustre.ptlrpc_body.pb_last_seen", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_ioobj_ioo_max_brw, /* TODO : create the
{ &hf_lustre_ptlrpc_body_pb_status,
{ "Pb Status", "lustre.ptlrpc_body.pb_status", FT_INT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_niobuf_remote_flags,
- { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Flags", "lustre.niobuf_remote.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ll_fid_id,
- { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Id", "lustre.ll_fid.id", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ost_lvb_lvb_blocks,
{ "Lvb Blocks", "lustre.ost_lvb.lvb_blocks", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lustre_msg_v2_lm_padding_2,
{ "Lm Padding 2", "lustre.lustre_msg_v2.lm_padding_2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_obd_connect_data_padding1,
- { "Padding1", "lustre.obd_connect_data.padding1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lov_ost_data_v1_l_ost_idx,
{ "L Ost Idx", "lustre.lov_ost_data_v1.l_ost_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_obd_connect_data_padding2,
- { "Padding2", "lustre.obd_connect_data.padding2", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_ioobj_ioo_seq,
{ "Ioo Gr", "lustre.obd_ioobj.ioo_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_niobuf_remote_offset,
{ &hf_lustre_llog_size_change_rec_lsc_io_epoch,
{ "Lsc Io Epoch", "lustre.llog_size_change_rec.lsc_io_epoch", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mgs_target_info_mti_flags,
- { "Mti Flags", "lustre.mgs_target_info.mti_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Mti Flags", "lustre.mgs_target_info.mti_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_reply_lock_policy_res1,
{ "Lock Policy Res1", "lustre.ldlm_reply.lock_policy_res1", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llogd_body_lgd_len,
{ "O Uid", "lustre.obdo.o_uid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mds_xattr_name,
{ "mds xattr name", "lustre.mds_xattr_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
- { &hf_lustre_lov_mds_md_v1,
- { "lov mds md v1", "lustre.lov_mds_md_v1", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_cookie,
{ "llog cookie", "lustre.llog_cookie", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
- { &hf_lustre_mds_md_data,
- { "mds md data", "lustre.mds_md_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
{ &hf_lustre_mds_reint_opcode,
{ "mds reint opcode", "lustre.mds_reint_opcode", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
{ &hf_lustre_mds_xattr_eadata,
{ "mds xattr eadata", "lustre.mds_xattr_eadata", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_mds_xattr_eadata_str,
+ { "mds xattr eadata", "lustre.mds_xattr_eadata.str", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
{ &hf_lustre_reint_name,
{ "mds reint name", "lustre.mds_reint_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
{ &hf_lustre_reint_old_name,
{ &hf_lustre_reint_new_name,
{ "mds reint new name", "lustre.mds_reint_new_name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_mds_md_data,
+ { "mds md data", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_v1,
+ { "lov mds md", "lustre.lov_mds_md", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_magic,
+ { "Lmm Magic", "lustre.lov_mds_md.lmm_magic", FT_UINT32, BASE_HEX, VALS(lustre_lov_magic) , 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_stripe_size,
+ { "Lmm Stripe Size", "lustre.lov_mds_md.lmm_stripe_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_object_id,
+ { "Lmm Object Id", "lustre.lov_mds_md.lmm_object_id", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_oi,
+ { "Lmm Object Id", "lustre.lov_mds_md.lmm_oi", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_object_seq,
+ { "Lmm Object SEQ", "lustre.lov_mds_md.lmm_object_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_stripe_count,
+ { "Lmm Stripe Count", "lustre.lov_mds_md.lmm_stripe_count", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_pattern,
+ { "Lmm Pattern", "lustre.lov_mds_md.lmm_pattern", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_layout_gen,
+ { "Lmm Layout Generation", "lustre.lov_mds_md.lmm_layout_gen", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }},
+ { &hf_lustre_lov_mds_md_lmm_pool_name,
+ { "Lmm Poolname", "lustre.lov_mds_md.lmm_poolname", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_lov_mds_md_lmm_objects,
+ { "Lmm Objects", "lustre.lov_mds_md.lmm_objects", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_ost_id_oi_id,
+ { "OI Object Id", "lustre.ost_id.oi.oi_id", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }},
+ { &hf_lustre_ost_id_oi_seq,
+ { "OI Object Seq", "lustre.ost_id.oi.oi_seq", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_valid,
- { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
+ { "O Valid", "lustre.obdo.o_valid", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_reply_lock_flags,
- { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32,BASE_HEX, NULL, 0, "", HFILL }},
-
- {&hf_lustre_ldlm_fl_lock_changed, {"LDLM_FL_LOCK_CHANGED", "lustre.ldlm_fl_lock_changed", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_LOCK_CHANGED, "", HFILL } },
- {&hf_lustre_ldlm_fl_block_granted, {"LDLM_FL_BLOCK_GRANTED", "lustre.ldlm_fl_block_granted", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_BLOCK_GRANTED, "", HFILL } },
- {&hf_lustre_ldlm_fl_block_conv, {"LDLM_FL_BLOCK_CONV", "lustre.ldlm_fl_block_conv", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_BLOCK_CONV, "", HFILL } },
- {&hf_lustre_ldlm_fl_block_wait, {"LDLM_FL_BLOCK_WAIT", "lustre.ldlm_fl_block_wait", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_BLOCK_WAIT, "", HFILL } },
- {&hf_lustre_ldlm_fl_cbpending, {"LDLM_FL_CBPENDING", "lustre.ldlm_fl_cbpending", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_CBPENDING, "", HFILL } },
- {&hf_lustre_ldlm_fl_ast_sent, {"LDLM_FL_AST_SENT", "lustre.ldlm_fl_ast_sent", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_AST_SENT, "", HFILL } },
- {&hf_lustre_ldlm_fl_wait_noreproc, {"LDLM_FL_WAIT_NOREPROC", "lustre.ldlm_fl_wait_noreproc", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_WAIT_NOREPROC, "", HFILL } },
- {&hf_lustre_ldlm_fl_cancel, {"LDLM_FL_CANCEL", "lustre.ldlm_fl_cancel", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_CANCEL, "", HFILL } },
- {&hf_lustre_ldlm_fl_replay, {"LDLM_FL_REPLAY", "lustre.ldlm_fl_replay", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_REPLAY, "", HFILL } },
- {&hf_lustre_ldlm_fl_intent_only, {"LDLM_FL_INTENT_ONLY", "lustre.ldlm_fl_intent_only", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_INTENT_ONLY, "", HFILL } },
- {&hf_lustre_ldlm_fl_local_only, {"LDLM_FL_LOCAL_ONLY", "lustre.ldlm_fl_local_only", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_LOCAL_ONLY, "", HFILL } },
- {&hf_lustre_ldlm_fl_failed, {"LDLM_FL_FAILED", "lustre.ldlm_fl_failed", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_FAILED, "", HFILL } },
- {&hf_lustre_ldlm_fl_has_intent, {"LDLM_FL_HAS_INTENT", "lustre.ldlm_fl_has_intent", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_HAS_INTENT, "", HFILL } },
- {&hf_lustre_ldlm_fl_canceling, {"LDLM_FL_CANCELING", "lustre.ldlm_fl_canceling", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_CANCELING, "", HFILL } },
- {&hf_lustre_ldlm_fl_local, {"LDLM_FL_LOCAL", "lustre.ldlm_fl_local", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_LOCAL, "", HFILL } },
- {&hf_lustre_ldlm_fl_warn, {"LDLM_FL_WARN", "lustre.ldlm_fl_warn", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_WARN, "", HFILL } },
- {&hf_lustre_ldlm_fl_discard_data, {"LDLM_FL_DISCARD_DATA", "lustre.ldlm_fl_discard_data", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_DISCARD_DATA, "", HFILL } },
- {&hf_lustre_ldlm_fl_no_timeout, {"LDLM_FL_NO_TIMEOUT", "lustre.ldlm_fl_no_timeout", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_NO_TIMEOUT, "", HFILL } },
- {&hf_lustre_ldlm_fl_block_nowait, {"LDLM_FL_BLOCK_NOWAIT", "lustre.ldlm_fl_block_nowait", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_BLOCK_NOWAIT, "", HFILL } },
- {&hf_lustre_ldlm_fl_test_lock, {"LDLM_FL_TEST_LOCK", "lustre.ldlm_fl_test_lock", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_TEST_LOCK, "", HFILL } },
- {&hf_lustre_ldlm_fl_lvb_ready, {"LDLM_FL_LVB_READY", "lustre.ldlm_fl_lvb_ready", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_LVB_READY, "", HFILL } },
- {&hf_lustre_ldlm_fl_kms_ignore, {"LDLM_FL_KMS_IGNORE", "lustre.ldlm_fl_kms_ignore", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_KMS_IGNORE, "", HFILL } },
- {&hf_lustre_ldlm_fl_no_lru, {"LDLM_FL_NO_LRU", "lustre.ldlm_fl_no_lru", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_NO_LRU, "", HFILL } },
- {&hf_lustre_ldlm_fl_cancel_on_block, {"LDLM_FL_CANCEL_ON_BLOCK", "lustre.ldlm_fl_cancel_on_block", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_CANCEL_ON_BLOCK, "", HFILL } },
- {&hf_lustre_ldlm_fl_cp_reqd, {"LDLM_FL_CP_REQD", "lustre.ldlm_fl_cp_reqd", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_CP_REQD, "", HFILL } },
- {&hf_lustre_ldlm_fl_cleaned, {"LDLM_FL_CLEANED", "lustre.ldlm_fl_cleaned", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_CLEANED, "", HFILL } },
- {&hf_lustre_ldlm_fl_atomic_cb, {"LDLM_FL_ATOMIC_CB", "lustre.ldlm_fl_atomic_cb", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_ATOMIC_CB, "", HFILL } },
- {&hf_lustre_ldlm_fl_bl_ast, {"LDLM_FL_BL_AST", "lustre.ldlm_fl_bl_ast", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_BL_AST, "", HFILL } },
- {&hf_lustre_ldlm_fl_bl_done, {"LDLM_FL_BL_DONE", "lustre.ldlm_fl_bl_done", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_BL_DONE, "", HFILL } },
- {&hf_lustre_ldlm_fl_deny_on_contention, {"LDLM_FL_DENY_ON_CONTENTION", "lustre.ldlm_fl_deny_on_contention", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_FL_DENY_ON_CONTENTION, "", HFILL } },
- {&hf_lustre_ldlm_ast_discard_data, {"LDLM_AST_DISCARD_DATA", "lustre.ldlm_ast_discard_data", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), LDLM_AST_DISCARD_DATA, "", HFILL } },
+ { "Lock Flags", "lustre.ldlm_reply.lock_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
+
+#define WSHARK_INIT_DATA
+#include "lustre_dlm_flags_wshark.c"
+#undef WSHARK_INIT_DATA
{ &hf_lustre_obdo_o_misc,
{ "O Misc", "lustre.obdo.o_misc", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ "Qd Id", "lustre.qunit_data_old2.qd_id", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_logid_rec_padding2,
{ "Padding2", "lustre.llog_logid_rec.padding2", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_orphan_rec_lor_tail,
- { "Lor Tail", "lustre.llog_orphan_rec.lor_tail", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_llog_logid_rec_padding5,
{ "Padding5", "lustre.llog_logid_rec.padding5", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
/*-------------------------------------------------------------------------------------------------------------*/
{ "lookup", "lustre.ldlm_intent.opc_lookup", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LOOKUP , "", HFILL } },
{ &hf_lustre_ldlm_intent_opc_unlink,
{ "unlink", "lustre.ldlm_intent.opc_unlink", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_UNLINK , "", HFILL } },
+ { &hf_lustre_ldlm_intent_opc_trunc,
+ { "trunc", "lustre.ldlm_intent.opc_trunc", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_TRUNC , "", HFILL } },
{ &hf_lustre_ldlm_intent_opc_getxattr,
{ "getxattr", "lustre.ldlm_intent.opc_getxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_GETXATTR , "", HFILL } },
{ &hf_lustre_ldlm_intent_opc_exec,
{ "exec", "lustre.ldlm_intent.opc_exec", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_EXEC , "", HFILL } },
{ &hf_lustre_ldlm_intent_opc_pin,
{ "pin", "lustre.ldlm_intent.opc_pin", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_PIN , "", HFILL } },
+ { &hf_lustre_ldlm_intent_opc_layout,
+ { "layout", "lustre.ldlm_intent.opc_layout", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_LAYOUT , "", HFILL } },
+ { &hf_lustre_ldlm_intent_opc_q_dqacq,
+ { "quota dqacq", "lustre.ldlm_intent.opc_quota_dqacq", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_DQACQ , "", HFILL } },
+ { &hf_lustre_ldlm_intent_opc_q_conn,
+ { "quota conn", "lustre.ldlm_intent.opc_quota_conn", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_QUOTA_CONN , "", HFILL } },
+ { &hf_lustre_ldlm_intent_opc_setxattr,
+ { "setxattr", "lustre.ldlm_intent.opc_setxattr", FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth), IT_SETXATTR , "", HFILL } },
/*-------------------------------------------------------------------*/
{ &hf_lustre_ldlm_intent_opc,
{ "intent opcode", "lustre.ldlm_intent.opc", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
{ &hf_lustre_llog_size_change_rec_lsc_hdr,
{ "Lsc Hdr", "lustre.llog_size_change_rec.lsc_hdr", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
- { &hf_lustre_llog_create_rec_lcr_tail,
- { "Lcr Tail", "lustre.llog_create_rec.lcr_tail", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_llog_logid_lgl_oseq,
{ "Lgl SEQ", "lustre.llog_logid.lgl_oseq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_create_rec_lcr_hdr,
- { "Lcr Hdr", "lustre.llog_create_rec.lcr_hdr", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_llog_cookie_lgc_padding,
{ "Lgc Padding", "lustre.llog_cookie.lgc_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_qunit_data_old_qd_type,
BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_llog_log_hdr_llh_size,
{ "Llh Size", "lustre.llog_log_hdr.llh_size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_create_rec_padding,
- { "Padding", "lustre.llog_create_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_handle,
{ "O Handle", "lustre.obdo.o_handle", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_obdo_o_atime,
{ &hf_lustre_qunit_data_padding,
{ "Padding", "lustre.qunit_data.padding", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_quota_adjust_qunit_qaq_flags,
- { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Qaq Flags", "lustre.quota_adjust_qunit.qaq_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_lock_desc_l_granted_mode,
- { "L Granted Mode", "lustre.ldlm_lock_desc.l_granted_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_t_vals), 0, "", HFILL }},
+ { "L Granted Mode", "lustre.ldlm_lock_desc.l_granted_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_vals), 0, "", HFILL }},
{ &hf_lustre_obdo_o_seq,
{ "O SEQ", "lustre.obdo.o_seq", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_gid,
{ &hf_lustre_llog_logid_rec_padding3,
{ "Padding3", "lustre.llog_logid_rec.padding3", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_log_hdr_llh_flags,
- { "Llh Flags", "lustre.llog_log_hdr.llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- {&hf_lustre_llog_hdr_llh_flag_zap_when_empty,
- {"LLOG_F_ZAP_WHEN_EMPTY","lustre.lustre.llog_log_hdr.llh_flag_zap",FT_BOOLEAN,32,TFS(&lnet_flags_set_truth),LLOG_F_ZAP_WHEN_EMPTY,"",HFILL } },
- {&hf_lustre_llog_hdr_llh_flag_is_cat,
- {"LLOG_F_IS_CAT","lustre.lustre.llog_log_hdr.llh_flag_cat",FT_BOOLEAN,32,TFS(&lnet_flags_set_truth),LLOG_F_IS_CAT,"",HFILL } },
- {&hf_lustre_llog_hdr_llh_flag_is_play,
- {"LOG_F_IS_PLAIN","lustre.lustre.llog_log_hdr.llh_flag_play",FT_BOOLEAN,32,TFS(&lnet_flags_set_truth),LLOG_F_IS_PLAIN,"",HFILL } },
+ { "Llh Flags", "lustre.llog_log_hdr.llh_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
+ { &hf_lustre_llog_hdr_llh_flag_zap_when_empty,
+ {"LLOG_F_ZAP_WHEN_EMPTY", "lustre.lustre.llog_log_hdr.llh_flag_zap",
+ FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth),
+ LLOG_F_ZAP_WHEN_EMPTY, "", HFILL } },
+ { &hf_lustre_llog_hdr_llh_flag_is_cat,
+ { "LLOG_F_IS_CAT", "lustre.lustre.llog_log_hdr.llh_flag_cat",
+ FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth),
+ LLOG_F_IS_CAT, "", HFILL } },
+ { &hf_lustre_llog_hdr_llh_flag_is_play,
+ { "LLOG_F_IS_PLAIN", "lustre.lustre.llog_log_hdr.llh_flag_play",
+ FT_BOOLEAN, 32, TFS(&lnet_flags_set_truth),
+ LLOG_F_IS_PLAIN, "", HFILL } },
{ &hf_lustre_llog_setattr_rec_lsr_oid,
{ "Lsr Oid", "lustre.llog_setattr_rec.lsr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ "Lgc Index", "lustre.llog_cookie.lgc_index", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lov_desc_ld_uuid,
{ "Ld Uuid", "lustre.lov_desc.ld_uuid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
- { &hf_lustre_llog_create_rec_lcr_oid,
- { "Lcr Oid", "lustre.llog_create_rec.lcr_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_reply_lock_desc,
{ "Lock Desc", "lustre.ldlm_reply.lock_desc", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
{ "Ld Padding 0", "lustre.lov_desc.ld_padding_0", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_unlink_rec_lur_ogen,
{ "Lur Ogen", "lustre.llog_unlink_rec.lur_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_orphan_rec_lor_hdr,
- { "Lor Hdr", "lustre.llog_orphan_rec.lor_hdr", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_cfg_marker_cm_flags,
- { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Cm Flags", "lustre.cfg_marker.cm_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_padding_3,
{ "O Padding 3", "lustre.obdo.o_padding_3", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_request_lock_desc,
{ "Lock Desc", "lustre.ldlm_request.lock_desc", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
- { &hf_lustre_llog_orphan_rec_padding,
- { "Padding", "lustre.llog_orphan_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obdo_o_flags,
- { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "O Flags", "lustre.obdo.o_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_mgs_target_info_mti_params,
{ "Mti Params", "lustre.mgs_target_info.mti_params", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_logid_lgl_ogen,
{ &hf_lustre_llog_unlink_rec_padding,
{ "Padding", "lustre.llog_unlink_rec.padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_lock_desc_l_req_mode,
- { "L Req Mode", "lustre.ldlm_lock_desc.l_req_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_t_vals), 0, "", HFILL }},
+ { "L Req Mode", "lustre.ldlm_lock_desc.l_req_mode", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_mode_vals), 0, "", HFILL }},
{ &hf_lustre_ldlm_extent_end,
{ "End", "lustre.ldlm_extent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_gen_rec_lgr_hdr,
{ "Lgr Hdr", "lustre.llog_gen_rec.lgr_hdr", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
- { &hf_lustre_llog_orphan_rec_lor_ogen,
- { "Lor Ogen", "lustre.llog_orphan_rec.lor_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llogd_body_lgd_llh_flags,
- { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Lgd Llh Flags", "lustre.llogd_body.lgd_llh_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_log_hdr_llh_cat_idx,
{ "Llh Cat Idx", "lustre.llog_log_hdr.llh_cat_idx", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llog_log_hdr_llh_bitmap_offset,
{ "Llh Bitmap Offset", "lustre.llog_log_hdr.llh_bitmap_offset", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_orphan_rec_lor_oid,
- { "Lor Oid", "lustre.llog_orphan_rec.lor_oid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_reply_lock_padding,
{ "Lock Padding", "lustre.ldlm_reply.lock_padding", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_quotactl_qc_id,
{ "Ld Tgt Count", "lustre.lov_desc.ld_tgt_count", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_llogd_body_lgd_cur_offset,
{ "Lgd Cur Offset", "lustre.llogd_body.lgd_cur_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_create_rec_lcr_ogen,
- { "Lcr Ogen", "lustre.llog_create_rec.lcr_ogen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_qunit_data_old2_qd_count,
{ "Qd Count", "lustre.qunit_data_old2.qd_count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_opnum,
{ "Operation", "lustre.opnum", FT_UINT16, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_qunit_data_old2_qd_flags,
- { "Qd Flags", "lustre.qunit_data_old2.qd_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Qd Flags", "lustre.qunit_data_old2.qd_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_flock_start,
{ "Start", "lustre.ldlm_flock.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_quota_adjust_qunit_qaq_bunit_sz,
{ "Pid", "lustre.ldlm_flock.pid", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_lov_desc_ld_default_stripe_size,
{ "Ld Default Stripe Size", "lustre.lov_desc.ld_default_stripe_size", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_log_hdr_llh_tgtuuid,
- { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_llog_log_hdr_llh_tgtuuid,
+ { "Llh Tgtuuid", "lustre.llog_log_hdr.llh_tgtuuid",
+ FT_STRING, BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_cfg_marker_cm_step,
{ "Cm Step", "lustre.cfg_marker.cm_step", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_mgs_send_param_mgs_param,
{ "Mgs Param", "lustre.mgs_send_param.mgs_param", FT_UINT8, BASE_DEC, NULL, 0, "", HFILL }},
- { &hf_lustre_llog_create_rec_lcr_fid,
- { "Lcr Fid", "lustre.llog_create_rec.lcr_fid", FT_NONE,
- BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_lov_desc_ld_default_stripe_offset,
{ "Ld Default Stripe Offset", "lustre.lov_desc.ld_default_stripe_offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_resource_desc_lr_name,
{ &hf_lustre_ost_lvb,
{ "ost lvb data", "lustre.ost_lvb", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_xattrs,
+ { "XATTR", "lustre.xattr", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_xattrs_name,
+ { "xattr name", "lustre.xattr.name", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_xattrs_data,
+ { "xattr data", "lustre.xattr.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_xattrs_size,
+ { "xattr size", "lustre.xattr.size", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+
{ &hf_lustre_obdo_o_ctime,
{ "O Ctime", "lustre.obdo.o_ctime",FT_ABSOLUTE_TIME,
ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } },
{ &hf_lustre_lov_desc_ld_qos_maxage,
{ "Ld Qos Maxage", "lustre.lov_desc.ld_qos_maxage", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_ldlm_resource_desc_lr_type,
- { "Lr Type", "lustre.ldlm_resource_desc.lr_type", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_type_t_vals), 0, "", HFILL }},
+ { "Lr Type", "lustre.ldlm_resource_desc.lr_type", FT_UINT16, BASE_DEC, VALS(lustre_ldlm_type_vals), 0, "", HFILL }},
{ &hf_lustre_llog_setattr_rec_lsr_tail,
{ "Lsr Tail", "lustre.llog_setattr_rec.lsr_tail", FT_NONE,
BASE_NONE, NULL, 0, "", HFILL } },
{ &hf_lustre_obd_dqblk_dqb_bsoftlimit,
{ "Dqb Bsoftlimit", "lustre.obd_dqblk.dqb_bsoftlimit", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_dqinfo_dqi_flags,
- { "Dqi Flags", "lustre.obd_dqinfo.dqi_flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL }},
+ { "Dqi Flags", "lustre.obd_dqinfo.dqi_flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL }},
{ &hf_lustre_obd_dqblk_dqb_btime,
{ "Dqb Btime", "lustre.obd_dqblk.dqb_btime", FT_ABSOLUTE_TIME,
ABSOLUTE_TIME_LOCAL, NULL, 0, "", HFILL } },
{ &hf_lustre_mdt_ioepoch_ioepoch,
{ "ioepoch", "lustre.mdt_ioepoch.ioepoch", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
{ &hf_lustre_mdt_ioepoch_flags,
- { "flags", "lustre.mdt_ioepoch.flags", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } },
+ { "flags", "lustre.mdt_ioepoch.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
{ &hf_lustre_mdt_ioepoch_padding,
{ "Padding", "lustre.mdt_ioepoch.padding", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
/* ACL */
{ &hf_lustre_acl,
{ "ACL", "lustre.acl", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ /* MDT Getinfo */
+ { &hf_lustre_mdt_getinfo_key,
+ { "MDT getinfo key", "lustre.mdt_getinfo.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_mdt_getinfo_vallen,
+ { "MDT getinfo Val Len", "lustre.mdt_getinfo.vallen", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_mdt_getinfo_data,
+ { "MDT getinfo data", "lustre.mdt_getinfo.data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ /* Close Data */
+ { &hf_lustre_close_data,
+ { "MDT Close", "lustre.mdt_close", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_close_fid,
+ { "Close FID", "lustre.mdt_close.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_close_data_ver,
+ { "Close data version", "lustre.mdt_close.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_close_reserved,
+ { "Close Reserved Space", "lustre.mdt_close.reserved", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ /* LDLM SET INFO */
+ { &hf_lustre_ldlm_key,
+ { "LDLM Set Info Key", "lustre.ldlm.key", FT_STRING, BASE_NONE, NULL, 0, "", HFILL }},
+ { &hf_lustre_ldlm_value,
+ { "LDLM Set Info Value", "lustre.ldlm.value", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ /* HSM Request */
+ { &hf_lustre_hsm_request,
+ { "HSM Request", "lustre.hsm_req", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_req_action,
+ { "HSM Req Action", "lustre.hsm_req.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } },
+ { &hf_lustre_hsm_req_archive_id,
+ { "HSM Req Archive ID", "lustre.hsm_req.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_req_flags,
+ { "HSM Req Flags", "lustre.hsm_req.flags", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_req_itemcount,
+ { "HSM Req Itemcount", "lustre.hsm_req.itemcount", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_req_data_len,
+ { "HSM Req Data Length", "lustre.hsm_req.data_len", FT_UINT32, BASE_DEC, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_hsm_user_item,
+ { "HSM User Item", "lustre.user_item", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_user_item_fid,
+ { "HSM User Item FID", "lustre.user_item.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_user_item_extent,
+ { "HSM User Item Extent", "lustre.user_item.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_hsm_extent,
+ { "HSM Extent", "lustre.hsm_extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_extent_offset,
+ { "HSM Extent Offset", "lustre.hsm_extent.offset", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_extent_length,
+ { "HSM Extent Length", "lustre.hsm_extent.len", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_hsm_progress,
+ { "HSM Progress", "lustre.hsm_progress", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_prog_fid,
+ { "HSM Prog FID", "lustre.hsm_progress.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_prog_cookie,
+ { "HSM Prog Cookie", "lustre.hsm_progress.cookie", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_prog_extent,
+ { "HSM Prog Extent", "lustre.hsm_progress.extent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_prog_flags,
+ { "HSM Prog Flags", "lustre.hsm_progress.flags", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_prog_errval,
+ { "HSM Prog Error Val", "lustre.hsm_progress.errval", FT_UINT16, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_prog_data_ver,
+ { "HSM Prog Data Version", "lustre.hsm_progress.data_ver", FT_UINT64, BASE_HEX, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_hsm_state_get,
+ { "HSM State GET", "lustre.hsm_state_get", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_us_states,
+ { "States", "lustre.hsm_state_get.states", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_us_archive_id,
+ { "Archive ID", "lustre.hsm_state_get.archive_id", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_us_in_prog_state,
+ { "In Progress State", "lustre.hsm_state_get.in_prog.state", FT_UINT32, BASE_HEX, VALS(lustre_hsm_progress_state_t_vals), 0, "", HFILL } },
+ { &hf_lustre_hsm_us_in_prog_action,
+ { "In Progress Action", "lustre.hsm_state_get.in_prog.action", FT_UINT32, BASE_HEX, VALS(lustre_hsm_user_action_t_vals), 0, "", HFILL } },
+ { &hf_lustre_hsm_us_in_prog_location,
+ { "In Progress Extent", "lustre.hsm_state_get.in_prog.location", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_hsm_us_ext_info,
+ { "Extended Info", "lustre.hsm_state_get.ext_info", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_qb,
+ { "Quota Body", "lustre.quota_body", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_fid,
+ { "Fid", "lustre.quota_body.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_id,
+ { "ID", "lustre.quota_body.id", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_flags,
+ { "Flags", "lustre.quota_body.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_padding,
+ { "padding", "lustre.quota_body.padding", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_count,
+ { "Count", "lustre.quota_body.count", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_usage,
+ { "Usage", "lustre.quota_body.usage", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_slv_ver,
+ { "Slave Ver", "lustre.quota_body.slv_ver", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_lockh,
+ { "Per-ID Lock Handle", "lustre.quota_body.lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_qb_glb_lockh,
+ { "Global Lock Handle", "lustre.quota_body.glb_lockh", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_qid_fid,
+ { "Fid", "lustre.lquota_id.fid", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_qid_uid,
+ { "UID", "lustre.lquota_id.uid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_qid_gid,
+ { "GID", "lustre.lquota_id.gid", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_layout_intent,
+ { "Layout Intent", "lustre.layout_intent", FT_NONE, BASE_NONE, NULL, 0, "", HFILL } },
+ { &hf_lustre_layout_intent_opc,
+ { "Op Code", "lustre.layout_intent.opc", FT_UINT32, BASE_HEX, VALS(lustre_layout_intent_opc_values), 0, "", HFILL } },
+ { &hf_lustre_layout_intent_flags,
+ { "Flags", "lustre.layout_intent.flags", FT_UINT32, BASE_HEX, NULL, 0, "", HFILL } },
+ { &hf_lustre_layout_intent_start,
+ { "Start", "lustre.layout_intent.start", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+ { &hf_lustre_layout_intent_end,
+ { "End", "lustre.layout_intent.end", FT_UINT64, BASE_DEC, NULL, 0, "", HFILL } },
+
+ { &hf_lustre_generic_data,
+ { "generic data", "lustre.generic_data", FT_NONE, BASE_NONE, NULL, 0, "", HFILL}},
};
&ett_lustre_lustre_handle_v2,
&ett_lustre_obd_connect_data,
&ett_lustre_lov_mds_md_v1,
+ &ett_lustre_lov_mds_md_v3,
&ett_lustre_lov_ost_data_v1,
&ett_lustre_obd_statfs,
&ett_lustre_obd_ioobj,
&ett_lustre_llog_rec_hdr,
&ett_lustre_llog_rec_tail,
&ett_lustre_llog_logid_rec,
- &ett_lustre_llog_create_rec,
- &ett_lustre_llog_orphan_rec,
&ett_lustre_llog_unlink_rec,
&ett_lustre_llog_setattr_rec,
&ett_lustre_llog_size_change_rec,
&ett_lustre_fld_range,
&ett_lustre_mdt_ioepoch,
&ett_lustre_capa,
+ &ett_lustre_close_data,
&ett_lustre_acl,
+ &ett_lustre_ladvise,
+ &ett_lustre_hsm_request,
+ &ett_lustre_hsm_user_item,
+ &ett_lustre_hsm_extent,
+ &ett_lustre_hsm_progress,
+ &ett_lustre_hsm_user_state,
+ &ett_lustre_quota_body,
+ &ett_lustre_lquota_id,
+ &ett_lustre_layout_intent,
+ &ett_lustre_xattrs,
+ &ett_lustre_ost_id,
};
proto_lustre = proto_register_protocol("Lustre", "lustre", "lustre");
lustre_handle=create_dissector_handle(dissect_lustre, proto_lustre);
/* we use Lustre only if we get ptl_index = One of this code (we have removed the bulk code) */
/* in LNET we test if the message is a put or not before adding an lnet.ptl_index value */
- dissector_add("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", CONNMGR_REQUEST_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", CONNMGR_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", OSC_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", OST_IO_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", OST_CREATE_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", MDS_REQUEST_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", LDLM_CB_REQUEST_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", LDLM_CB_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", LDLM_CANCEL_REQUEST_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", LDLM_CANCEL_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", MDS_SETATTR_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", MDS_READPAGE_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", MGC_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", MGS_REQUEST_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", MGS_REPLY_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", OST_REQUEST_PORTAL , lustre_handle);
- dissector_add("lnet.ptl_index", FLD_REQUEST_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", SEQ_METADATA_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", SEQ_DATA_PORTAL, lustre_handle);
- dissector_add("lnet.ptl_index", SEQ_CONTROLLER_PORTAL, lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", CONNMGR_REQUEST_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", CONNMGR_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", OSC_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", OST_IO_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", OST_CREATE_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MDC_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MDS_REQUEST_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", LDLM_CB_REQUEST_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", LDLM_CB_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", LDLM_CANCEL_REQUEST_PORTAL, lustre_handle);
+ dissector_add_uint("lnet.ptl_index", LDLM_CANCEL_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MDS_SETATTR_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MDS_READPAGE_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MGC_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MGS_REQUEST_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", MGS_REPLY_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", OST_REQUEST_PORTAL , lustre_handle);
+ dissector_add_uint("lnet.ptl_index", FLD_REQUEST_PORTAL, lustre_handle);
+ dissector_add_uint("lnet.ptl_index", SEQ_METADATA_PORTAL, lustre_handle);
+ dissector_add_uint("lnet.ptl_index", SEQ_DATA_PORTAL, lustre_handle);
+ dissector_add_uint("lnet.ptl_index", SEQ_CONTROLLER_PORTAL, lustre_handle);
}