Whamcloud - gitweb
LU-7734 lnet: cpt locking
[fs/lustre-release.git] / lnet / include / lnet / types.h
index a5cec58..6b9a949 100644 (file)
@@ -409,6 +409,7 @@ typedef struct {
         * - LNET_MD_IOVEC: The start and length fields specify an array of
         *   struct iovec.
         * - LNET_MD_MAX_SIZE: The max_size field is valid.
+        * - LNET_MD_BULK_HANDLE: The bulk_handle field is valid.
         *
         * Note:
         * - LNET_MD_KIOV or LNET_MD_IOVEC allows for a scatter/gather
@@ -432,6 +433,15 @@ typedef struct {
         * descriptor are not logged.
         */
        lnet_handle_eq_t eq_handle;
+       /**
+        * The bulk MD handle which was registered to describe the buffers
+        * either to be used to transfer data to the peer or receive data
+        * from the peer. This allows LNet to properly determine the NUMA
+        * node on which the memory was allocated and use that to select the
+        * nearest local network interface. This value is only used
+        * if the LNET_MD_BULK_HANDLE option is set.
+        */
+       lnet_handle_md_t bulk_handle;
 } lnet_md_t;
 
 /* Max Transfer Unit (minimum supported everywhere).
@@ -462,6 +472,8 @@ typedef struct {
 #define LNET_MD_MAX_SIZE            (1 << 7)
 /** See lnet_md_t::options. */
 #define LNET_MD_KIOV                (1 << 8)
+/** See lnet_md_t::options. */
+#define LNET_MD_BULK_HANDLE         (1 << 9)
 
 /* For compatibility with Cray Portals */
 #define LNET_MD_PHYS                        0
@@ -545,20 +557,22 @@ typedef struct {
        lnet_process_id_t   target;
        /** The identifier (nid, pid) of the initiator. */
        lnet_process_id_t   initiator;
+       /** The source NID on the initiator. */
+       lnet_process_id_t   source;
        /**
         * The NID of the immediate sender. If the request has been forwarded
         * by routers, this is the NID of the last hop; otherwise it's the
-        * same as the initiator.
+        * same as the source.
         */
-       lnet_nid_t          sender;
+       lnet_nid_t          sender;
        /** Indicates the type of the event. */
        lnet_event_kind_t   type;
        /** The portal table index specified in the request */
-       unsigned int        pt_index;
+       unsigned int        pt_index;
        /** A copy of the match bits specified in the request. */
-       __u64               match_bits;
+       __u64               match_bits;
        /** The length (in bytes) specified in the request. */
-       unsigned int        rlength;
+       unsigned int        rlength;
        /**
         * The length (in bytes) of the data that was manipulated by the
         * operation. For truncated operations, the manipulated length will be
@@ -566,7 +580,7 @@ typedef struct {
         * see lnet_md_t). For all other operations, the manipulated length
         * will be the length of the requested operation, i.e. rlength.
         */
-       unsigned int        mlength;
+       unsigned int        mlength;
        /**
         * The handle to the MD associated with the event. The handle may be
         * invalid if the MD has been unlinked.
@@ -577,31 +591,31 @@ typedef struct {
         * been processed. In particular, the threshold field in md will
         * reflect the value of the threshold after the operation occurred.
         */
-       lnet_md_t           md;
+       lnet_md_t           md;
        /**
         * 64 bits of out-of-band user data. Only valid for LNET_EVENT_PUT.
         * \see LNetPut
         */
-       __u64               hdr_data;
+       __u64               hdr_data;
        /**
         * Indicates the completion status of the operation. It's 0 for
         * successful operations, otherwise it's an error code.
         */
-       int                 status;
+       int                 status;
        /**
         * Indicates whether the MD has been unlinked. Note that:
         * - An event with unlinked set is the last event on the MD.
         * - This field is also set for an explicit LNET_EVENT_UNLINK event.
         * \see LNetMDUnlink
         */
-       int                 unlinked;
+       int                 unlinked;
        /**
         * The displacement (in bytes) into the memory region that the
         * operation used. The offset can be determined by the operation for
         * a remote managed MD or by the local MD.
         * \see lnet_md_t::options
         */
-       unsigned int        offset;
+       unsigned int        offset;
        /**
         * The sequence number for this event. Sequence numbers are unique
         * to each event.