--- /dev/null
+REINT_SETXATTR
+^^^^^^^^^^^^^^
+[[mdt-rec-setxattr]]
+
+The variant of the 'mdt_rec_reint' for the 'setxattr' operation is:
+
+----
+struct mdt_rec_setxattr {
+ __u32 sx_opcode;
+ __u32 sx_cap;
+ __u32 sx_fsuid;
+ __u32 sx_fsuid_h;
+ __u32 sx_fsgid;
+ __u32 sx_fsgid_h;
+ __u32 sx_suppgid1;
+ __u32 sx_suppgid1_h;
+ __u32 sx_suppgid2;
+ __u32 sx_suppgid2_h;
+ struct lu_fid sx_fid;
+ __u64 sx_padding_1;
+ __u32 sx_padding_2;
+ __u32 sx_padding_3;
+ __u64 sx_valid;
+ __s64 sx_time;
+ __u64 sx_padding_5;
+ __u64 sx_padding_6;
+ __u64 sx_padding_7;
+ __u32 sx_size;
+ __u32 sx_flags;
+ __u32 sx_padding_8;
+ __u32 sx_padding_9;
+ __u32 sx_padding_10;
+ __u32 sx_padding_11;
+};
+----
+
+The 'setxattr' variant modifies the semantics of the generic REINT
+fields as follows:
+
+There is only one FID to be operated upon, and the 'sx_valid',
+and the second 'struct lu_fid' is just "padding".
+
+The 'sx_valid' field identifies which of the other fields in the
+structure are to be honored. If the corresponding flag bit is not set
+then the value of the corresponding field is to be ignored. The flag
+values draw from the same set of definitions as <<mdt-rec-setattr>>.
+
+.Flags for 'sx_valid' field of 'struct mdt_rec_setxattr'
+[options="header"]
+|====
+| Flag | Meaning
+| OBD_MD_FLCTIME | ctime attribute
+|====
+
+The 'sx_time' field is set to the 'ctime' value for the update and the
+OBD_MD_FLCTIME value is used in the 'sx_valid' field to indicate the
+value is to be honored. Fixme: The other flag values for 'sx_valid'
+are not clear in the code, so I need to dig into them more
+deeply. Similarly, the use and possible values for the 'sx_flags'
+field are not obvious.
+