Whamcloud - gitweb
LUDOC-270 protocol: Add a 'basement' dir with support files
[doc/protocol.git] / basement / structures_list.txt
1 This set of structure specificiations includes all those directly
2 refereneced in the message formats and all those subsidiary structures
3 mentioned in them.
4
5 acl
6 ^^^
7
8 define LUSTRE_POSIX_ACL_MAX_SIZE
9 sizeof(posix_acl_xattr_header) +
10 LUSTRE_POSIX_ACL_MAX_ENTRIES * sizeof(posix_acl_xattr_entry))
11
12 mdt_md
13 ^^^^^^
14
15 MIN_MD_SIZE (sizeof(struct lov_mds_md) + 1 * sizeof(struct lov_ost_data))
16
17
18 close_data
19 ^^^^^^^^^^
20
21 .close_data
22 [options="header"]
23 |=====
24 | type | field
25 | struct lustre_handle | cd_handle
26 | struct lu_fid  | cd_fid
27 | __u64   | cd_data_version
28 | __u64   | cd_reserved[8]
29 |=====
30
31 hsm_current_action
32 ^^^^^^^^^^^^^^^^^^
33
34 .hsm_current_action
35 [options="header"]
36 |=====
37 | type | field
38 | __u32   | hca_state
39 | __u32   | hca_action
40 | struct hsm_extent | hca_location
41 |=====
42
43 hsm_extent
44 ^^^^^^^^^^
45
46 .hsm_extent
47 [options="header"]
48 |=====
49 | type | field
50 | __u64 | offset
51 | __u64 | length
52 |=====
53
54 hsm_progress_kernel
55 ^^^^^^^^^^^^^^^^^^^
56
57 .hsm_progress_kernel
58 [options="header"]
59 |=====
60 | type | field
61 | lustre_fid  | hpk_fid
62 | __u64   | hpk_cookie
63 | struct hsm_extent | hpk_extent
64 | __u16   | hpk_flags
65 | __u16   | hpk_errval 
66 | __u32   | hpk_padding1
67 | __u64   | hpk_data_version
68 | __u64   | hpk_padding2
69
70 |=====
71
72 hsm_request
73 ^^^^^^^^^^^
74
75 .hsm_request
76 [options="header"]
77 |=====
78 | type | field
79 | __u32 | hr_action 
80 | __u32 | hr_archive_id 
81 | __u64 | hr_flags  
82 | __u32 | hr_itemcount 
83 | __u32 | hr_data_len
84 |=====
85
86 hsm_state_set
87 ^^^^^^^^^^^^^
88
89 .hsm_state_set
90 [options="header"]
91 |=====
92 | type | field
93 | __u32 | hss_valid
94 | __u32 | hss_archive_id
95 | __u64 | hss_setmask
96 | __u64 | hss_clearmask
97 |=====
98
99 hsm_user_item
100 ^^^^^^^^^^^^^
101
102 .hsm_user_item
103 [options="header"]
104 |=====
105 | type | field
106 |       lustre_fid        | hui_fid
107 |       struct hsm_extent | hui_extent
108 |=====
109
110 hsm_user_state
111 ^^^^^^^^^^^^^^
112
113 .hsm_user_state
114 [options="header"]
115 |=====
116 | type | field
117 | __u32   | hus_states
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[]
123 |=====
124
125 idx_info
126 ^^^^^^^^
127
128 .idx_info
129 [options="header"]
130 |=====
131 | type | field
132 | __u32  | ii_magic
133 | __u32  | ii_flags
134 | __u16  | ii_count
135 | __u16  | ii_pad0
136 | __u32  | ii_attrs
137 | struct lu_fid | ii_fid
138 | __u64  | ii_version
139 | __u64  | ii_hash_start
140 | __u64  | ii_hash_end
141 | __u16  | ii_keysize
142 | __u16  | ii_recsize
143 | __u32  | ii_pad1
144 | __u64  | ii_pad2
145 | __u64  | ii_pad3
146 |=====
147
148 layout_intent
149 ^^^^^^^^^^^^^
150
151 .layout_intent
152 [options="header"]
153 |=====
154 | type | field
155 | __u32 | li_opc 
156 | __u32 | li_flags
157 | __u64 | li_start
158 | __u64 | li_end
159 |=====
160
161 ldlm_gl_lquota_desc
162 ^^^^^^^^^^^^^^^^^^^
163
164 .ldlm_gl_lquota_desc
165 [options="header"]
166 |=====
167 | type | field
168 | union lquota_id | gl_id
169 | __u64 | gl_flags
170 | __u64 | gl_ver
171 | __u64 | gl_hardlimit
172 | __u64 | gl_softlimit
173 | __u64 | gl_time
174 | __u64 | gl_pad2
175 |=====
176
177 ldlm_intent
178 ^^^^^^^^^^^
179
180 .ldlm_intent
181 [options="header"]
182 |=====
183 | type | field
184 |        __u64 | opc
185 |=====
186
187 ldlm_lock_desc
188 ^^^^^^^^^^^^^^
189
190 .ldlm_lock_desc
191 [options="header"]
192 |=====
193 | type | field
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
198 |=====
199
200 ldlm_reply
201 ^^^^^^^^^^
202
203 .ldlm_reply
204 [options="header"]
205 |=====
206 | type | field
207 |        __u32 | lock_flags
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
213 |=====
214
215 ldlm_request
216 ^^^^^^^^^^^^
217
218 .ldlm_request
219 [options="header"]
220 |=====
221 | type | field
222 |        __u32 | lock_flags
223 |        __u32 | lock_count
224 |        struct ldlm_lock_desc | lock_desc
225 |        struct lustre_handle | lock_handle\[LDLM_LOCKREQ_HANDLES\]
226 |=====
227
228 ldlm_res_id
229 ^^^^^^^^^^^
230
231 .ldlm_res_id
232 [options="header"]
233 |=====
234 | type | field
235 | __u64 | name[RES_NAME_SIZE];
236 |=====
237
238 ldlm_resource_desc
239 ^^^^^^^^^^^^^^^^^^
240
241 .ldlm_resource_desc
242 [options="header"]
243 |=====
244 | type | field
245 | ldlm_type_t | lr_type
246 | __u32 | lr_padding
247 | struct ldlm_res_id | lr_name
248 |=====
249
250 lfsck_reply
251 ^^^^^^^^^^^
252
253 .lfsck_reply
254 [options="header"]
255 |=====
256 | type | field
257 | __u32  | lr_status
258 | __u32  | lr_padding_1
259 | __u64  | lr_padding_2
260 |=====
261
262 lfsck_request
263 ^^^^^^^^^^^^^
264
265 .lfsck_request
266 [options="header"]
267 |=====
268 | type | field
269 | __u32  | lr_event
270 | __u32  | lr_index
271 | __u32  | lr_flags
272 | __u32  | lr_valid
273 | union __u32 | lr_speed, lr_status, lr_type
274 | __u16  | lr_version
275 | __u16  | lr_active
276 | __u16  | lr_param
277 | __u16  | lr_async_windows
278 | __u32  | lr_flags2
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
284 |=====
285
286 ll_fiemap_info_key
287 ^^^^^^^^^^^^^^^^^^
288
289 .ll_fiemap_info_key
290 [options="header"]
291 |=====
292 | type | field
293 |        char    | name[8]
294 |        struct  obdo | oa
295 |        struct  ll_user_fiemap | fiemap
296 |=====
297
298 ll_user_fiemap
299 ^^^^^^^^^^^^^^
300
301 .ll_user_fiemap
302 [options="header"]
303 |=====
304 | type | field
305 | __u64 | fm_start
306 | __u64 | fm_length
307 | __u32 | fm_flags
308 | __u32 | fm_mapped_extents
309 | __u32 | fm_extent_count
310 | __u32 | fm_reserved
311 | struct ll_fiemap_extent | fm_extents[0]
312 |=====
313
314 ll_fiemap_extent
315 ^^^^^^^^^^^^^^^^
316
317 .ll_fiemap_extent
318 [options="header"]
319 |=====
320 | type | field
321 | __u64 | fe_logical
322 | __u64 | fe_physical
323 | __u64 | fe_length
324 | __u64 | fe_reserved64[2]
325 | __u32 | fe_flags
326 | __u32 | fe_device
327 | __u32 | fe_reserved[2]
328 |=====
329
330 llog_cookie
331 ^^^^^^^^^^^
332
333 .llog_cookie
334 [options="header"]
335 |=====
336 | type | field
337 |        struct llog_logid       | lgc_lgl
338 |        __u32                   | lgc_subsys
339 |        __u32                   | lgc_index
340 |        __u32                   | lgc_padding
341
342 |=====
343
344 llog_gen
345 ^^^^^^^^
346
347 .llog_gen
348 [options="header"]
349 |=====
350 | type | field
351 | __u64 | mnt_cnt;
352 | __u64 | conn_cnt
353 |=====
354
355 llog_log_hdr
356 ^^^^^^^^^^^^
357
358 .llog_log_hdr
359 [options="header"]
360 |=====
361 | type | field
362 | struct llog_rec_hdr | llh_hdr
363 | __s64   | llh_timestamp
364 |        __u32                   | llh_count
365 |        __u32                   | llh_bitmap_offset
366 |        __u32                   | llh_size
367 |        __u32                   | llh_flags
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
373 |=====
374
375 llog_rec_hdr
376 ^^^^^^^^^^^^
377
378 .llog_rec_hdr
379 [options="header"]
380 |=====
381 | type | field
382 | __u32 | lrh_len
383 | __u32 | lrh_index
384 | __u32 | lrh_type
385 | __u32 | lrh_id
386 |=====
387
388 llog_rec_tail
389 ^^^^^^^^^^^^^
390
391 .llog_rec_tail
392 [options="header"]
393 |=====
394 | type | field
395 | __u32 | lrt_len;
396 | __u32 | lrt_index
397 |=====
398
399 llog_logid
400 ^^^^^^^^^^
401
402 .llog_logid
403 [options="header"]
404 |=====
405 | type | field
406 | struct ost_id | lgl_oi
407 | __u32 | lgl_ogen
408 |=====
409
410 llogd_body
411 ^^^^^^^^^^
412
413 .llogd_body
414 [options="header"]
415 |=====
416 | type | field
417 |        struct llog_logid  | lgd_logid
418 |        __u32 | lgd_ctxt_idx
419 |        __u32 | lgd_llh_flags
420 |        __u32 | lgd_index
421 |        __u32 | lgd_saved_index
422 |        __u32 | lgd_len
423 |        __u64 | lgd_cur_offset
424 |=====
425
426 llogd_conn_body
427 ^^^^^^^^^^^^^^^
428
429 .llogd_conn_body
430 [options="header"]
431 |=====
432 | type | field
433 |        struct llog_gen         | lgdc_gen
434 |        struct llog_logid       | lgdc_logid
435 |        __u32                   | lgdc_ctxt_idx
436 |=====
437
438 lov_mds_md_v1
439 ^^^^^^^^^^^^^
440
441 .lov_mds_md_v1
442 [options="header"]
443 |=====
444 | type | field
445 | __u32 | lmm_magic
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]
452 |=====
453
454 lov_ost_data
455 ^^^^^^^^^^^^
456
457 .lov_ost_data
458 [options="header"]
459 |=====
460 | type | field
461 | struct ost_id | l_ost_oi
462 | __u32 l_ost_gen
463 | __u32 l_ost_idx
464 |=====
465
466 lu_fid
467 ^^^^^^
468
469 .lu_fid
470 [options="header"]
471 |=====
472 | type | field
473 | __u64 | f_seq
474 | __u32 | f_oid
475 | __u32 | f_ver
476 |=====
477
478 lu_seq_range
479 ^^^^^^^^^^^^
480
481 .lu_seq_range
482 [options="header"]
483 |=====
484 | type | field
485 | __u64 | lsr_start
486 | __u64 | lsr_end
487 | __u32 | lsr_index
488 | __u32 | lsr_flags
489 |=====
490
491 lustre_capa
492 ^^^^^^^^^^^
493
494 .lustre_capa
495 [options="header"]
496 |=====
497 | type | field
498 |        struct lu_fid   | lc_fid         
499 |        __u64           | lc_opc         
500 |        __u64           | lc_uid         
501 |        __u64           | lc_gid         
502 |        __u32           | lc_flags       
503 |        __u32           | lc_keyid       
504 |        __u32           | lc_timeout     
505 |        __u32           | lc_expiry      
506 |        __u8            | lc_hmac[CAPA_HMAC_MAX_LEN]   
507 |=====
508
509 lustre_handle
510 ^^^^^^^^^^^^^
511
512 .lustre_handle
513 [options="header"]
514 |=====
515 | type | field
516 | __u64 | cookie
517 |=====
518
519 mdc_swap_layouts
520 ^^^^^^^^^^^^^^^^
521
522 .mdc_swap_layouts
523 [options="header"]
524 |=====
525 | type | field
526 | __u64           | msl_flags
527 |=====
528
529 mdt_body
530 ^^^^^^^^
531
532 .mdt_body
533 [options="header"]
534 |=====
535 | type | field
536 | struct lu_fid | mbo_fid1
537 | struct lu_fid | mbo_fid2
538 | struct lustre_handle | mbo_handle
539 | __u64 | mbo_valid
540 | __u64 | mbo_size 
541 | __s64 | mbo_mtime
542 | __s64 | mbo_atime
543 | __s64 | mbo_ctime
544 | __u64 | mbo_blocks 
545 | __u64 | mbo_ioepoch
546 | __u64 | mbo_t_state 
547 | __u32 | mbo_fsuid
548 | __u32 | mbo_fsgid
549 | __u32 | mbo_capability
550 | __u32 | mbo_mode
551 | __u32 | mbo_uid
552 | __u32 | mbo_gid
553 | __u32 | mbo_flags
554 | __u32 | mbo_rdev
555 | __u32 | mbo_nlink 
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
562 | __u32 | mbo_uid_h 
563 | __u32 | mbo_gid_h 
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 
570 |=====
571
572 mdt_ioepoch
573 ^^^^^^^^^^^
574
575 .mdt_ioepoch
576 [options="header"]
577 |=====
578 | type | field
579 |        struct lustre_handle | handle
580 |        __u64  | ioepoch
581 |        __u32  | flags
582 |        __u32  | padding
583 |=====
584
585 mdt_rec_reint
586 ^^^^^^^^^^^^^
587
588 .mdt_rec_reint
589 [options="header"]
590 |=====
591 | type | field
592 | __u32           | rr_opcode
593 | __u32           | rr_cap
594 | __u32           | rr_fsuid
595 | __u32           | rr_fsuid_h
596 | __u32           | rr_fsgid
597 | __u32           | rr_fsgid_h
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
604 | __s64  | rr_mtime
605 | __s64  | rr_atime
606 | __s64  | rr_ctime
607 | __u64           | rr_size
608 | __u64           | rr_blocks
609 | __u32           | rr_bias
610 | __u32           | rr_mode
611 | __u32           | rr_flags
612 | __u32           | rr_flags_h
613 | __u32           | rr_umask
614 | __u32           | rr_padding_4 
615 |=====
616
617 mgs_config_res
618 ^^^^^^^^^^^^^^
619
620 .mgs_config_res
621 [options="header"]
622 |=====
623 | type | field
624 |        __u64    | mcr_offset    
625 |        __u64    | mcr_size      
626 |=====
627
628 mgs_send_param
629 ^^^^^^^^^^^^^^
630
631 .mgs_send_param
632 [options="header"]
633 |=====
634 | type | field
635 |        char             | mgs_param[MGS_PARAM_MAXLEN]
636 |=====
637
638 mgs_target_info
639 ^^^^^^^^^^^^^^^
640
641 .mgs_target_info
642 [options="header"]
643 |=====
644 | type | field
645 |        __u32            | mti_lustre_ver
646 |        __u32            | mti_stripe_index
647 |        __u32            | mti_config_ver
648 |        __u32            | mti_flags
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]
656 |=====
657
658 niobuf_remote
659 ^^^^^^^^^^^^^
660
661 .niobuf_remote
662 [options="header"]
663 |=====
664 | type | field
665 | __u64 | rnb_offset
666 | __u32 | rnb_len
667 | __u32 | rnb_flags
668 |=====
669
670 obd_connect_data
671 ^^^^^^^^^^^^^^^^
672
673 .obd_connect_data
674 [options="header"]
675 |=====
676 | type | field
677 | __u64 | ocd_connect_flags 
678 | __u32 | ocd_version  
679 | __u32 | ocd_grant  
680 | __u32 | ocd_index  
681 | __u32 | ocd_brw_size  
682 |        __u64 | ocd_ibits_known   
683 |        __u8  | ocd_blocksize     
684 |        __u8  | ocd_inodespace    
685 |        __u16 | ocd_grant_extent  
686 |        __u32 | ocd_unused        
687 |        __u64 | ocd_transno       
688 |        __u32 | ocd_group         
689 |        __u32 | ocd_cksum_types   
690 |        __u32 | ocd_max_easize    
691 |        __u32 | ocd_instance      
692 |        __u64 | ocd_maxbytes      
693 |        __u64 | padding1          
694 |        __u64 | padding2          
695 |        __u64 | padding3          
696 |        __u64 | padding4          
697 |        __u64 | padding5          
698 |        __u64 | padding6          
699 |        __u64 | padding7          
700 |        __u64 | padding8          
701 |        __u64 | padding9          
702 |        __u64 | paddingA          
703 |        __u64 | paddingB          
704 |        __u64 | paddingC          
705 |        __u64 | paddingD          
706 |        __u64 | paddingE          
707 |        __u64 | paddingF          
708 |=====
709
710 obd_dqblk
711 ^^^^^^^^^
712
713 .obd_dqblk
714 [options="header"]
715 |=====
716 | type | field
717 | __u64 | dqb_bhardlimit
718 | __u64 | dqb_bsoftlimit
719 | __u64 | dqb_curspace
720 | __u64 | dqb_ihardlimit
721 | __u64 | dqb_isoftlimit
722 | __u64 | dqb_curinodes
723 | __u64 | dqb_btime
724 | __u64 | dqb_itime
725 | __u32 | dqb_valid
726 | __u32 | dqb_paddin
727 |=====
728
729 obd_dqinfo
730 ^^^^^^^^^^
731
732 .obd_dqinfo
733 [options="header"]
734 |=====
735 | type | field
736 | __u64 | dqi_bgrace
737 | __u64 | dqi_igrace
738 | __u32 | dqi_flags
739 | __u32 | dqi_valid
740 |=====
741
742 obd_ioobj
743 ^^^^^^^^^
744
745 .obd_ioobj
746 [options="header"]
747 |=====
748 | type | field
749 | struct ost_id | ioo_oid 
750 | __u32  | ioo_max_brw 
751 | __u32  | ioo_bufcnt 
752 |=====
753
754 obd_quotactl
755 ^^^^^^^^^^^^
756
757 .obd_quotactl
758 [options="header"]
759 |=====
760 | type | field
761 | __u32   | qc_cmd
762 | __u32   | qc_type 
763 | __u32   | qc_id
764 | __u32   | qc_stat
765 | struct obd_dqinfo | qc_dqinfo
766 | struct obd_dqblk | qc_dqblk
767 |=====
768
769 obd_statfs
770 ^^^^^^^^^^
771
772 .obd_statfs
773 [options="header"]
774 |=====
775 | type | field
776 |        __u64           | os_type
777 |        __u64           | os_blocks
778 |        __u64           | os_bfree
779 |        __u64           | os_bavail
780 |        __u64           | os_files
781 |        __u64           | os_ffree
782 |        __u8            | os_fsid[40]
783 |        __u32           | os_bsize
784 |        __u32           | os_namelen
785 |        __u64           | os_maxbytes
786 |        __u32           | os_state       
787 | __u32           | os_fprecreated 
788      
789 |        __u32           | os_spare2
790 |        __u32           | os_spare3
791 |        __u32           | os_spare4
792 |        __u32           | os_spare5
793 |        __u32           | os_spare6
794 |        __u32           | os_spare7
795 |        __u32           | os_spare8
796 |        __u32           | os_spare9
797 |=====
798
799 obd_uuid
800 ^^^^^^^^
801
802 .obd_uuid
803 [options="header"]
804 |=====
805 | type | field
806 |        char | uuid[UUID_MAX]
807 |=====
808
809 obdo
810 ^^^^
811
812 .obdo
813 [options="header"]
814 |=====
815 | type | field
816 | __u64   | o_valid
817 | struct ost_id   |      o_oi
818 | __u64   | o_parent_seq
819 | __u64   | o_size
820 | __s64   | o_mtime
821 | __s64   | o_atime
822 | __s64   | o_ctime
823 | __u64   | o_blocks
824 | __u64   | o_grant
825 | __u32   | o_blksize
826 | __u32   | o_mode
827 | __u32   | o_uid
828 | __u32   | o_gid
829 | __u32   | o_flags
830 | __u32   | o_nlink
831 | __u32   | o_parent_oid
832 | __u32   | o_misc
833 | __u64   | o_ioepoch
834 | __u32   | o_stripe_idx
835 | __u32   | o_parent_ver
836 | struct lustre_handle   |     o_handle
837 | struct llog_cookie  |      o_lcookie
838 | __u32   | o_uid_h
839 | __u32   | o_gid_h
840 | __u64   | o_data_version
841 | __u64   | o_padding_4
842 | __u64   | o_padding_5
843 | __u64   | o_padding_6
844 |=====
845
846 ost_body
847 ^^^^^^^^
848
849 .ost_body
850 [options="header"]
851 |=====
852 | type | field
853 | struct  obdo | oa
854 |=====
855
856 ost_id
857 ^^^^^^
858
859 .ost_id
860 [options="header"]
861 |=====
862 | type | field
863  union  struct  __u64 | oi_id, oi_seq
864 |  struct lu_fid | oi_fid
865 |=====
866
867 ptlrpc_body
868 ^^^^^^^^^^^
869
870 Each buffer has additional structure imposed on it, and the first
871 buffer always has the format given by a 'ptlrpc_body' structure.
872
873 .ptlrpc_body
874 [options="header"]
875 |=====
876 | type | field
877 | struct lustre_handle | pb_handle
878 | __u32 | pb_type
879 | __u32 | pb_version
880 | __u32 | pb_opc
881 | __u32 | pb_status
882 | __u64 | pb_last_xid
883 | __u64 | pb_last_seen
884 | __u64 | pb_last_committed
885 | __u64 | pb_transno
886 | __u32 | pb_flags
887 | __u32 | pb_op_flags
888 | __u32 | pb_conn_cnt
889 | __u32 | pb_timeout  
890 | __u32 | pb_service_time 
891 | __u32 | pb_limit
892 | __u64 | pb_slv
893 | __u64 | pb_pre_versions[PTLRPC_NUM_VERSIONS]
894 | __u64 | pb_padding[4]
895 | char  | pb_jobid[LUSTRE_JOBID_SIZE]
896 |=====
897
898 A 'struct lustre_handle' contains a single 64-bit field called 'cookie'
899 that ...
900
901 The semantics of each field may be different between requst messages
902 and replies.
903
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. 
915
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. 
924
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: 
927      LUSTRE_OBD_VERSION
928      LUSTRE_MDS_VERSION
929      LUSTRE_OST_VERSION
930      LUSTRE_DLM_VERSION
931      LUSTRE_LOG_VERSION
932      LUSTRE_MGS_VERSION
933 What exactly is the significance of these?
934
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.
937
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.
948
949 'pb_last_xid' is not used.
950
951 'pb_last_seen' is not used.
952
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.
958
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.
963
964 'pb_flags' is one among:
965 MSG_LAST_REPLAY
966 MSG_RESENT
967 MSG_REPLAY
968 MSG_DELAY_REPLAY
969 MSG_VERSION_REPLAY
970 MSG_REQ_REPLAY_DONE
971 MSG_LOCK_REPLAY_DONE
972
973
974 'pb_op_flags' is one among:
975
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 */
984
985
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.
993
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
1000 actual reply.
1001
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. 
1006
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
1010 thier sizes.
1011
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.
1016
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.
1022
1023 'pb_padding[4]' is reserved for use and must also respect the 8 byte
1024 alignment requirement. 
1025
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.
1029
1030
1031
1032 quota_body
1033 ^^^^^^^^^^
1034
1035 .quota_body
1036 [options="header"]
1037 |=====
1038 | type | field
1039 | struct lu_fid | qb_fid     
1040 | union | lquota_id qb_id      
1041 | __u32  | qb_flags   
1042 | __u32  | qb_padding
1043 | __u64  | qb_count   
1044 | __u64  | qb_usage   
1045 | __u64  | qb_slv_ver 
1046 | struct lustre_handle | qb_lockh     
1047 | struct lustre_handle | qb_glb_lockh 
1048 | __u64  | qb_padding1[4]
1049 |=====