Command 36: MDS_REINT ~~~~~~~~~~~~~~~~~~~~~ [[mds-reint-rpm]] An RPC that implements an operation that will change the information on an MDT. There are a variety of operations all gathered under the MDS_REINT 'opcode'. ---- typedef enum { REINT_SETATTR = 1, REINT_CREATE = 2, REINT_LINK = 3, REINT_UNLINK = 4, REINT_RENAME = 5, REINT_OPEN = 6, REINT_SETXATTR = 7, REINT_RMENTRY = 8, REINT_MIGRATE = 9, REINT_MAX } mds_reint_t, mdt_reint_t; ---- REINT_SETATTR ^^^^^^^^^^^^^ [[mds-reint-setattr-rpc]] An RPC that implements the 'setattr' sub-command of the MDS_REINT. .MDS_REINT:REINT_SETATTR Generic Packet Structure image::mds-reint-setattr-generic.png["MDS_REINT:REINT_SETATTR Generic Packet Structure",height=100] ////////////////////////////////////////////////////////////////////// The mds-reint-setattr-generic.png diagram resembles this text art: MDS_REINT: --REINT_SETATTR-request------------------------------------- | ptlrpc_body | mdt_rec_setattr | lustre_capa | mdt_ioepoc | eadata | llog_cookie | ldlm_request | ------------------------------------------------------------ --REINT_SETATTR-reply---------------------------------- | ptlrpc_body | mdt_body | mdt_md | acl | lustre_capa | lustre_capa | ------------------------------------------------------- ////////////////////////////////////////////////////////////////////// The second buffer ('mdt_rec_setattr' in the above) is one of the variants specific to the particular REINT as given by the 'mdt_reint_t' opcode. Each such variant has the same number and size of fields, but how the fields are interpreted varies slightly between variiants. For all the variant structures refer to <>. REINT_SETXATTR ^^^^^^^^^^^^^^ [[mds-reint-setxattr-rpc]] An RPC that implements the 'setxattr' sub-command of the MDS_REINT. .MDS_REINT:REINT_SETXATTR Generic Packet Structure image::mds-reint-setxattr-generic.png["MDS_REINT:REINT_SETXATTR Generic Packet Structure",height=100] ////////////////////////////////////////////////////////////////////// The mds-reint-setxattr-generic.png diagram resembles this text art: MDS_REINT: --REINT_SETXATTR-request------------------------------------- | ptlrpc_body | mdt_rec_setxattr | lustre_capa | mdt_ioepoc | eadata | llog_cookie | ldlm_request | ------------------------------------------------------------- --REINT_SETXATTR-reply--------------------------------- | ptlrpc_body | mdt_body | mdt_md | acl | lustre_capa | lustre_capa | ------------------------------------------------------- ////////////////////////////////////////////////////////////////////// 'ptlrpc_body':: RPC descriptor. 'mdt_rec_setattr':: Information pertinent to setting attributes on the MDT. 'mdt_rec_setxattr':: Information pertinent to setting extended attributes on the MDT. 'lustre_capa':: So called "capabilities" structure. This is deprecated in recent versions of Lustre, and commonly appears in the packet header as a zero length buffer. 'mdt_ioepoch':: Identifying "epoch" information. This buffer is optional and will appear as zero length in some packets. 'eadata':: Information about extended attributes. This buffer is optional and will appear as zero length in some packets. 'llog_cookie':: A log handle. This buffer is optional and will appear as zero length in some packets. 'ldlm_request':: A structure specifying a lock that can be the subject of early lock cancellation. See <>. 'mdt_body':: Metadata about the resource. 'mdt_md':: Layout data for the resource. This buffer is optional and will appear as zero length in some packets. 'acl':: Access control list data. This buffer is optional and will appear as zero length in some packets.