Whamcloud - gitweb
LUDOC-293 protocol: Merge all recent patches
[doc/protocol.git] / mdt_rec_setxattr.txt
diff --git a/mdt_rec_setxattr.txt b/mdt_rec_setxattr.txt
new file mode 100644 (file)
index 0000000..408fe3b
--- /dev/null
@@ -0,0 +1,61 @@
+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.
+