1 This set of structure specificiations includes all those directly
2 refereneced in the message formats and all those subsidiary structures
8 define LUSTRE_POSIX_ACL_MAX_SIZE
9 sizeof(posix_acl_xattr_header) +
10 LUSTRE_POSIX_ACL_MAX_ENTRIES * sizeof(posix_acl_xattr_entry))
15 MIN_MD_SIZE (sizeof(struct lov_mds_md) + 1 * sizeof(struct lov_ost_data))
25 | struct lustre_handle | cd_handle
26 | struct lu_fid | cd_fid
27 | __u64 | cd_data_version
28 | __u64 | cd_reserved[8]
40 | struct hsm_extent | hca_location
61 | lustre_fid | hpk_fid
63 | struct hsm_extent | hpk_extent
66 | __u32 | hpk_padding1
67 | __u64 | hpk_data_version
68 | __u64 | hpk_padding2
80 | __u32 | hr_archive_id
82 | __u32 | hr_itemcount
94 | __u32 | hss_archive_id
96 | __u64 | hss_clearmask
106 | lustre_fid | hui_fid
107 | struct hsm_extent | hui_extent
118 | __u32 | hus_archive_id
119 | __u32 | hus_in_progress_state
120 | __u32 | hus_in_progress_action
121 | struct hsm_extent | hus_in_progress_location
122 | char | hus_extended_info[]
137 | struct lu_fid | ii_fid
139 | __u64 | ii_hash_start
140 | __u64 | ii_hash_end
168 | union lquota_id | gl_id
171 | __u64 | gl_hardlimit
172 | __u64 | gl_softlimit
194 | struct ldlm_resource_desc | l_resource
195 | ldlm_mode_t | l_req_mode
196 | ldlm_mode_t | l_granted_mode
197 | ldlm_wire_policy_data_t | l_policy_data
208 | __u32 | lock_padding
209 | struct ldlm_lock_desc | lock_desc
210 | struct lustre_handle | lock_handle
211 | __u64 | lock_policy_res1
212 | __u64 | lock_policy_res2
224 | struct ldlm_lock_desc | lock_desc
225 | struct lustre_handle | lock_handle\[LDLM_LOCKREQ_HANDLES\]
235 | __u64 | name[RES_NAME_SIZE];
245 | ldlm_type_t | lr_type
247 | struct ldlm_res_id | lr_name
258 | __u32 | lr_padding_1
259 | __u64 | lr_padding_2
273 | union __u32 | lr_speed, lr_status, lr_type
277 | __u16 | lr_async_windows
279 | struct lu_fid | lr_fid
280 | struct lu_fid | lr_fid2
281 | struct lu_fid | lr_fid3
282 | __u64 | lr_padding_1
283 | __u64 | lr_padding_2
295 | struct ll_user_fiemap | fiemap
308 | __u32 | fm_mapped_extents
309 | __u32 | fm_extent_count
310 | __u32 | fm_reserved
311 | struct ll_fiemap_extent | fm_extents[0]
322 | __u64 | fe_physical
324 | __u64 | fe_reserved64[2]
327 | __u32 | fe_reserved[2]
337 | struct llog_logid | lgc_lgl
340 | __u32 | lgc_padding
362 | struct llog_rec_hdr | llh_hdr
363 | __s64 | llh_timestamp
365 | __u32 | llh_bitmap_offset
368 | __u32 | llh_cat_idx
369 | struct obd_uuid | llh_tgtuuid
370 | __u32 | llh_reserved[LLOG_HEADER_SIZE/sizeof(__u32) - 23]
371 | __u32 | llh_bitmap[LLOG_BITMAP_BYTES/sizeof(__u32)]
372 | struct llog_rec_tail | llh_tail
406 | struct ost_id | lgl_oi
417 | struct llog_logid | lgd_logid
418 | __u32 | lgd_ctxt_idx
419 | __u32 | lgd_llh_flags
421 | __u32 | lgd_saved_index
423 | __u64 | lgd_cur_offset
433 | struct llog_gen | lgdc_gen
434 | struct llog_logid | lgdc_logid
435 | __u32 | lgdc_ctxt_idx
446 | __u32 | lmm_pattern
447 | struct ost_id | lmm_oi
448 | __u32 | lmm_stripe_size
449 | __u16 | lmm_stripe_count
450 | __u16 | lmm_layout_gen
451 | struct lov_ost_data | lmm_objects[0]
461 | struct ost_id | l_ost_oi
498 | struct lu_fid | lc_fid
506 | __u8 | lc_hmac[CAPA_HMAC_MAX_LEN]
536 | struct lu_fid | mbo_fid1
537 | struct lu_fid | mbo_fid2
538 | struct lustre_handle | mbo_handle
545 | __u64 | mbo_ioepoch
546 | __u64 | mbo_t_state
549 | __u32 | mbo_capability
556 | __u32 | mbo_unused2
557 | __u32 | mbo_suppgid
558 | __u32 | mbo_eadatasize
559 | __u32 | mbo_aclsize
560 | __u32 | mbo_max_mdsize
561 | __u32 | mbo_max_cookiesize
564 | __u32 | mbo_padding_5
565 | __u64 | mbo_padding_6
566 | __u64 | mbo_padding_7
567 | __u64 | mbo_padding_8
568 | __u64 | mbo_padding_9
569 | __u64 | mbo_padding_10
579 | struct lustre_handle | handle
598 | __u32 | rr_suppgid1
599 | __u32 | rr_suppgid1_h
600 | __u32 | rr_suppgid2
601 | __u32 | rr_suppgid2_h
602 | struct lu_fid | rr_fid1
603 | struct lu_fid | rr_fid2
614 | __u32 | rr_padding_4
635 | char | mgs_param[MGS_PARAM_MAXLEN]
645 | __u32 | mti_lustre_ver
646 | __u32 | mti_stripe_index
647 | __u32 | mti_config_ver
649 | __u32 | mti_nid_count
650 | __u32 | mti_instance
651 | char | mti_fsname[MTI_NAME_MAXLEN]
652 | char | mti_svname[MTI_NAME_MAXLEN]
653 | char | mti_uuid[sizeof(struct obd_uuid)]
654 | __u64 | mti_nids[MTI_NIDS_MAX]
655 | char | mti_params[MTI_PARAM_MAXLEN]
677 | __u64 | ocd_connect_flags
678 | __u32 | ocd_version
681 | __u32 | ocd_brw_size
682 | __u64 | ocd_ibits_known
683 | __u8 | ocd_blocksize
684 | __u8 | ocd_inodespace
685 | __u16 | ocd_grant_extent
687 | __u64 | ocd_transno
689 | __u32 | ocd_cksum_types
690 | __u32 | ocd_max_easize
691 | __u32 | ocd_instance
692 | __u64 | ocd_maxbytes
717 | __u64 | dqb_bhardlimit
718 | __u64 | dqb_bsoftlimit
719 | __u64 | dqb_curspace
720 | __u64 | dqb_ihardlimit
721 | __u64 | dqb_isoftlimit
722 | __u64 | dqb_curinodes
749 | struct ost_id | ioo_oid
750 | __u32 | ioo_max_brw
765 | struct obd_dqinfo | qc_dqinfo
766 | struct obd_dqblk | qc_dqblk
785 | __u64 | os_maxbytes
787 | __u32 | os_fprecreated
806 | char | uuid[UUID_MAX]
817 | struct ost_id | o_oi
818 | __u64 | o_parent_seq
831 | __u32 | o_parent_oid
834 | __u32 | o_stripe_idx
835 | __u32 | o_parent_ver
836 | struct lustre_handle | o_handle
837 | struct llog_cookie | o_lcookie
840 | __u64 | o_data_version
841 | __u64 | o_padding_4
842 | __u64 | o_padding_5
843 | __u64 | o_padding_6
863 union struct __u64 | oi_id, oi_seq
864 | struct lu_fid | oi_fid
870 Each buffer has additional structure imposed on it, and the first
871 buffer always has the format given by a 'ptlrpc_body' structure.
877 | struct lustre_handle | pb_handle
882 | __u64 | pb_last_xid
883 | __u64 | pb_last_seen
884 | __u64 | pb_last_committed
887 | __u32 | pb_op_flags
888 | __u32 | pb_conn_cnt
890 | __u32 | pb_service_time
893 | __u64 | pb_pre_versions[PTLRPC_NUM_VERSIONS]
894 | __u64 | pb_padding[4]
895 | char | pb_jobid[LUSTRE_JOBID_SIZE]
898 A 'struct lustre_handle' contains a single 64-bit field called 'cookie'
901 The semantics of each field may be different between requst messages
904 'pb_handle' is a 64-bit value to uniquely determine shared state between
905 a sender and a reciever. When communication is initiated, as in a
906 "connect" message (eg. MDS_CONNCET, from a client to a server), the value will be
907 0. A reply (from the server back to the client) to this message
908 will contain a value (a "cookie") to identify the shared
909 state information (the "export") for the client that is maintained
910 on the server. The client will then associate this cookie with the
911 shared state information (the "import") that it maintains about
912 the server. Subsequent messages between this client and this server
913 will refer to the same shared state by using this cookie as the
914 handle in this field.
916 'pb_type' is one of the three message types PTL_RPC_MSG_REQUEST,
917 PTL_RPC_MSG_ERR, or PTL_RPC_MSG_REPL. As one might expect, "request"
918 and "reply" are the two usual message types, one for initiating and
919 exchange and the other for completing it. The "err" message type is
920 only for responding to a PtlRPC message that failed to be interpeted
921 as an actual message. Note that other errors, such as those that
922 emerge from processing the actual message content, do not use the
923 PTL_RPC_MSG_ERR symbol.
925 'pb_version' is a field that encodes the Lustre protocol version
926 in combination ('or'-ed) with one of the service type version. One of:
933 What exactly is the significance of these?
935 'pb_opc' gives the actual operation that is the subject of this
936 PtlRPC. There is a long list of such "op codes". List a few.
938 'pb_status' allows for the return of a status code or error code
939 (eg. "permissoin denied"). This is one of the ways to return an error
940 (the other is if an RPC could not even be interpreted, which results
941 in an pb_type=RPC_MSG_ERR) given that the particular pb_opc had an
942 error in its processing. A value of zero signifies that the request
943 was successfully executed. Note that for operations that modify the
944 file system this indicates the operation has been initiated, not
945 necessarily completed (cf. pb_last_commited). The actual status values
946 will be consistent with standard Liunx kernel (POsIX) error codes
947 (eg. ENOENT). This field is always zero in requests.
949 'pb_last_xid' is not used.
951 'pb_last_seen' is not used.
953 'pb_last_committed' is the highest transaction number that has been
954 commited to storage. The transaction numbers are maintained on a
955 per-target basis and each such sequence is a monotonically increasing
956 sequence. This field is only set in reply messages and can accomany
957 any kind of message including pings and non-modifying transactions.
959 'pb_transno' is the server assigned (and is unique for each target
960 that server for all time) 64-bit number assigned to any file system
961 modifying operation for that server. It is zero for and message that
962 does not modify the file system.
964 'pb_flags' is one among:
974 'pb_op_flags' is one among:
976 MSG_CONNECT_RECOVERING 0x00000001
977 MSG_CONNECT_RECONNECT 0x00000002
978 MSG_CONNECT_REPLAYABLE 0x00000004
979 MSG_CONNECT_LIBCLIENT 0x00000010
980 MSG_CONNECT_INITIAL 0x00000020
981 MSG_CONNECT_ASYNC 0x00000040
982 MSG_CONNECT_NEXT_VER 0x00000080 /* use next version of lustre_msg */
983 MSG_CONNECT_TRANSNO 0x00000100 /* report transno */
986 'pb_conn_cnt' is a monotonically increasing number that identifyies to
987 the server the connection era for the client than was current when the
988 message was constructed. The era for a client is the portion of the
989 shared state that reflects its connection count. This count is
990 intialized to one at the first connection and subsequent eviction and
991 reconnect events will increment the count. This enables the server to
992 discard requests from clients whose era has expired.
994 'pb_timeout' tells how long the client is willing to wait for its
995 specific reply message. In the reply, it signifies how long the
996 service is estimated to take for this type of requests (op
997 codes). There are multiple request queues, called "portals". The
998 server may send an "early reply" for express purpose of extending the
999 client's timeout. Such an "early reply" will still be followed by the
1002 'pb_service_time' is how long this particular operation actually took
1003 from the time it first arrived in the request queue to the time the
1004 server replied. Note that the client can use this value and the local
1005 elapsed time to calculate network latency.
1007 'pb_limit' is a value, in a reply message, sent from a lock server to
1008 a client to set the maximum number of locks available to the
1009 client. When dynamic lock LRU's are enable this allows for managing
1012 'pb_slv' is the "server lock volume" which is the product of the
1013 number of locks and their age. It is used to estimate the lock traffic
1014 load. In the reply it is this client's share of the total lock
1015 load on the server. It is prescriptive.
1017 'pb_pre_versions[PTLRPC_NUM_VERSIONS]' has up to four entries
1018 (PTLRPC_NUM_VERSIONS = 4). The values are sent in reply messages. Each
1019 entry returns the previous versions of an object modified by this
1020 operation. The version being communicated is the transaction number
1021 (pb_transno) of the request that last modified that object.
1023 'pb_padding[4]' is reserved for use and must also respect the 8 byte
1024 alignment requirement.
1026 'pb_jobid[LUSTRE_JOBID_SIZE]' gives a unique identifier aassociated by
1027 the process on behalf of which this meeage was generated. The
1028 identifier is assigned to the user process by a job scheduler, if any.
1039 | struct lu_fid | qb_fid
1040 | union | lquota_id qb_id
1042 | __u32 | qb_padding
1045 | __u64 | qb_slv_ver
1046 | struct lustre_handle | qb_lockh
1047 | struct lustre_handle | qb_glb_lockh
1048 | __u64 | qb_padding1[4]