summaryrefslogtreecommitdiffstats
path: root/src/H5VLiod_client.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5VLiod_client.h')
-rw-r--r--src/H5VLiod_client.h53
1 files changed, 31 insertions, 22 deletions
diff --git a/src/H5VLiod_client.h b/src/H5VLiod_client.h
index cc6edc2..b6b43e7 100644
--- a/src/H5VLiod_client.h
+++ b/src/H5VLiod_client.h
@@ -29,13 +29,13 @@
/* forward declaration of file struct */
struct H5VL_iod_file_t;
+/* forward declaration of object struct */
struct H5VL_iod_object_t;
-/* types for requests */
+/* enum for types of requests */
typedef enum H5RQ_type_t {
HG_FILE_CREATE,
HG_FILE_OPEN,
- HG_FILE_FLUSH,
HG_FILE_CLOSE,
HG_ATTR_CREATE,
HG_ATTR_OPEN,
@@ -94,20 +94,30 @@ typedef enum H5RQ_type_t {
/* the client IOD VOL request struct */
typedef struct H5VL_iod_request_t {
- H5RQ_type_t type;
- void *data;
- void *req;
- struct H5VL_iod_object_t *obj;
- H5VL_iod_state_t state;
- H5_status_t status;
- uint64_t axe_id;
- size_t num_parents;
- struct H5VL_iod_request_t **parent_reqs;
- struct H5VL_iod_request_t *prev;
- struct H5VL_iod_request_t *next;
+ H5RQ_type_t type; /* The operation type of this request */
+ void *data; /* data associated with request (usually used at completion time) */
+ void *req; /* the request pointer correponding to the Mercury request */
+ struct H5VL_iod_object_t *obj; /* The object pointer that this request is associated with */
+ H5VL_iod_state_t state; /* current internal state of the request */
+ H5_status_t status; /* external status given to use of request */
+ uint64_t axe_id; /* The AXE ID this request was assigned */
+ unsigned ref_count; /* reference count to know when this request can be freed. */
+ H5VL_iod_req_info_t *trans_info; /* pointer to transaction or read context struct for this request */
+
+ size_t num_parents; /* Number of parents this request has (in AXE) */
+ struct H5VL_iod_request_t **parent_reqs; /* an array of the parent request pointers */
+
+ /* Linked list pointers for the container this request was generated. */
+ struct H5VL_iod_request_t *file_prev;
+ struct H5VL_iod_request_t *file_next;
+
+ /* Linked list pointers for all IOD VOL requests in the library */
struct H5VL_iod_request_t *global_prev;
struct H5VL_iod_request_t *global_next;
- unsigned ref_count;
+
+ /* Linked list pointers for the transaction this request belong to */
+ struct H5VL_iod_request_t *trans_prev;
+ struct H5VL_iod_request_t *trans_next;
} H5VL_iod_request_t;
/* struct that contains the information about the IOD container */
@@ -279,17 +289,16 @@ H5_DLL herr_t H5VL_iod_request_complete(H5VL_iod_file_t *file, H5VL_iod_request_
H5_DLL herr_t H5VL_iod_request_cancel(H5VL_iod_file_t *file, H5VL_iod_request_t *req);
H5_DLL herr_t H5VL_iod_request_decr_rc(H5VL_iod_request_t *request);
-H5_DLL herr_t H5VL_iod_get_parent_info(H5VL_iod_object_t *obj, H5VL_loc_params_t loc_params,
- const char *name, /*OUT*/iod_obj_id_t *iod_id,
- /*OUT*/iod_handle_t *iod_oh,
- /*OUT*/H5VL_iod_request_t **parent_req,
- /*OUT*/char **new_name, /*OUT*/H5VL_iod_object_t **last_obj);
-H5_DLL herr_t H5VL_iod_get_axe_parents(H5VL_iod_object_t *obj, /*IN/OUT*/ size_t *count,
- /*OUT*/ AXE_task_t *parent_axe_ids,
- /*OUT*/ H5VL_iod_request_t **parent_reqs);
+H5_DLL herr_t H5VL_iod_get_parent_requests(H5VL_iod_object_t *obj, H5VL_iod_req_info_t *req_info,
+ H5VL_iod_request_t **parent_reqs, size_t *num_parents);
+H5_DLL herr_t H5VL_iod_get_loc_info(H5VL_iod_object_t *obj, iod_obj_id_t *iod_id,
+ iod_handle_t *iod_oh);
+H5_DLL herr_t H5VL_iod_get_obj_requests(H5VL_iod_object_t *obj, /*IN/OUT*/ size_t *count,
+ /*OUT*/ H5VL_iod_request_t **parent_reqs);
H5_DLL herr_t H5VL__iod_create_and_forward(hg_id_t op_id, H5RQ_type_t op_type,
H5VL_iod_object_t *request_obj, htri_t track,
size_t num_parents, H5VL_iod_request_t **parent_reqs,
+ H5VL_iod_req_info_t *req_info,
void *input, void *output, void *data, void **req);
H5_DLL herr_t H5VL_iod_gen_obj_id(int myrank, int nranks, uint64_t cur_index,