Whamcloud - gitweb
LUDOC-297 protocol: Update protocol document
[doc/protocol.git] / struct_ost_body.txt
1 .OST Body
2 [[struct-ost-body]]
3 ****
4 The 'ost_body' structure just holds a 'struct obdo', which is where
5 all the actual information is conveyed.
6
7 [source,c]
8 ----
9 struct ost_body {
10         struct  obdo oa;
11 };
12 ----
13 ****
14
15 .Obdo
16 [[struct-obdo]]
17 ****
18 The 'obdo' structure conveys metadata about a resource on an OST.
19
20 [source,c]
21 ----
22 struct obdo {
23         __u64                   o_valid;
24         struct ost_id           o_oi; /* OBD_MD_FLID */
25         __u64                   o_parent_seq; /* OBD_MD_FLFID */
26         __u64                   o_size; /* OBD_MD_FLSIZE */
27         __s64                   o_mtime; /* OBD_MD_FLMTIME */
28         __s64                   o_atime; /* OBD_MD_FLMTIME */
29         __s64                   o_ctime; /* OBD_MD_FLCTIME */
30         __u64                   o_blocks; /* OBD_MD_FLBLOCKS */
31         __u64                   o_grant; /* OBD_MD_FLGRANT */
32         __u32                   o_blksize; /* OBD_MD_FLBLKSZ */
33         __u32                   o_mode; /* OBD_MD_FLMODE */
34         __u32                   o_uid; /* OBD_MD_FLUID */
35         __u32                   o_gid; /* OBD_MD_FLGID */
36         __u32                   o_flags; /* OBD_MD_FLFLAGS */
37         __u32                   o_nlink; /* OBD_MD_FLNLINK */
38         __u32                   o_parent_oid;
39         __u32                   o_misc;
40         __u64                   o_ioepoch; /* OBD_MD_ */
41         __u32                   o_stripe_idx;
42         __u32                   o_parent_ver; /* OBD_MD_FLFID */
43         struct lustre_handle    o_handle; /* OBD_MD_FLHANDLE */
44         struct llog_cookie      o_lcookie; /* OBD_MD_FLCOOKIE */
45         __u32                   o_uid_h;
46         __u32                   o_gid_h;
47         __u64                   o_data_version; /* OBD_MD_FLDATAVERSION */
48         __u64                   o_padding_4;
49         __u64                   o_padding_5;
50         __u64                   o_padding_6;
51 };
52 ----
53
54 The 'o_valid' field identifies which other fields in the structure are
55 to be interpreted. The flags are the same set (with additions) used
56 for the 'mdt_body' field 'mbo_valid' (see <<struct-mdt-body>>).
57 ****
58
59 [source,c]
60 ----
61 #define OBD_MD_FLID        (0x00000001ULL)
62 #define OBD_MD_FLATIME     (0x00000002ULL)
63 #define OBD_MD_FLMTIME     (0x00000004ULL)
64 #define OBD_MD_FLCTIME     (0x00000008ULL)
65 #define OBD_MD_FLSIZE      (0x00000010ULL)
66 #define OBD_MD_FLBLOCKS    (0x00000020ULL)
67 #define OBD_MD_FLBLKSZ     (0x00000040ULL)
68 #define OBD_MD_FLMODE      (0x00000080ULL)
69 #define OBD_MD_FLTYPE      (0x00000100ULL)
70 #define OBD_MD_FLUID       (0x00000200ULL)
71 #define OBD_MD_FLGID       (0x00000400ULL)
72 #define OBD_MD_FLFLAGS     (0x00000800ULL)
73 #define OBD_MD_FLNLINK     (0x00002000ULL)
74 #define OBD_MD_FLGENER     (0x00004000ULL)
75 /*#define OBD_MD_FLINLINE    (0x00008000ULL)
76 #define OBD_MD_FLRDEV      (0x00010000ULL)
77 #define OBD_MD_FLEASIZE    (0x00020000ULL)
78 #define OBD_MD_LINKNAME    (0x00040000ULL)
79 #define OBD_MD_FLHANDLE    (0x00080000ULL)
80 #define OBD_MD_FLCKSUM     (0x00100000ULL)
81 #define OBD_MD_FLQOS       (0x00200000ULL)
82 /*#define OBD_MD_FLOSCOPQ    (0x00400000ULL)
83 #define OBD_MD_FLCOOKIE    (0x00800000ULL)
84 #define OBD_MD_FLGROUP     (0x01000000ULL)
85 #define OBD_MD_FLFID       (0x02000000ULL)
86 #define OBD_MD_FLEPOCH     (0x04000000ULL)
87 #define OBD_MD_FLGRANT     (0x08000000ULL)
88 #define OBD_MD_FLDIREA     (0x10000000ULL)
89 #define OBD_MD_FLUSRQUOTA  (0x20000000ULL)
90 #define OBD_MD_FLGRPQUOTA  (0x40000000ULL)
91 #define OBD_MD_FLMODEASIZE (0x80000000ULL)
92 #define OBD_MD_MDS         (0x0000000100000000ULL)
93 #define OBD_MD_REINT       (0x0000000200000000ULL)
94 #define OBD_MD_MEA         (0x0000000400000000ULL)
95 #define OBD_MD_TSTATE      (0x0000000800000000ULL)
96 #define OBD_MD_FLXATTR       (0x0000001000000000ULL)
97 #define OBD_MD_FLXATTRLS     (0x0000002000000000ULL)
98 #define OBD_MD_FLXATTRRM     (0x0000004000000000ULL)
99 #define OBD_MD_FLACL         (0x0000008000000000ULL)
100 #define OBD_MD_FLRMTPERM     (0x0000010000000000ULL)
101 #define OBD_MD_FLMDSCAPA     (0x0000020000000000ULL)
102 #define OBD_MD_FLOSSCAPA     (0x0000040000000000ULL)
103 #define OBD_MD_FLCKSPLIT     (0x0000080000000000ULL)
104 #define OBD_MD_FLCROSSREF    (0x0000100000000000ULL)
105 #define OBD_MD_FLGETATTRLOCK (0x0000200000000000ULL)
106 #define OBD_MD_FLOBJCOUNT    (0x0000400000000000ULL)
107 #define OBD_MD_FLRMTLSETFACL (0x0001000000000000ULL)
108 #define OBD_MD_FLRMTLGETFACL (0x0002000000000000ULL)
109 #define OBD_MD_FLRMTRSETFACL (0x0004000000000000ULL)
110 #define OBD_MD_FLRMTRGETFACL (0x0008000000000000ULL)
111 #define OBD_MD_FLDATAVERSION (0x0010000000000000ULL)
112 #define OBD_MD_FLRELEASED    (0x0020000000000000ULL)
113 #define OBD_MD_DEFAULT_MEA   (0x0040000000000000ULL)
114 ----
115
116 ****
117 The two fields here that are specific to the 'ost_body' case are the
118 'o_oi' and the 'o_stripe_idx', which give the identity of the OST and
119 the stripe index assigned to it.
120
121 The 'o_handle' field is a 'lustre_handle' (See
122 <<struct-lustre-handle>>). In this context it represents a lock. In
123 most cases it will be 0. In an OST_PUNCH RPC (See <<truncate-rpcs>>) it
124 may refer to a lock on the resource being modified that was previously
125 acquired, though a lock is not required for that operation. The effect
126 is to extend the timeout for that lock.
127 ****