summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@lbl.gov>2020-12-15 04:49:24 (GMT)
committerGitHub <noreply@github.com>2020-12-15 04:49:24 (GMT)
commitd85f6e2d6a33ffbc03b04a98193ac6e0f3116805 (patch)
treec91598e715faeb0c2520db69ffee08261534201a
parent56b1b3a2b2801ea7c8eb2b0b26d73a58796f1e89 (diff)
downloadhdf5-d85f6e2d6a33ffbc03b04a98193ac6e0f3116805.zip
hdf5-d85f6e2d6a33ffbc03b04a98193ac6e0f3116805.tar.gz
hdf5-d85f6e2d6a33ffbc03b04a98193ac6e0f3116805.tar.bz2
Revise async hard link creation to have a real H5VL_object_t (#175)
-rw-r--r--src/H5L.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/H5L.c b/src/H5L.c
index be49441..2219020 100644
--- a/src/H5L.c
+++ b/src/H5L.c
@@ -701,6 +701,11 @@ done:
*
* Purpose: Asynchronous version of H5Lcreate_hard
*
+ * Note: The implementation for this routine is different from other
+ * _async operations, as the 'api_common' routine needs a "real"
+ * H5VL_object_t to point at, which is usually provided by the
+ * loc_id, but isn't here.
+ *
* Return: Non-negative on success/Negative on failure
*
*-------------------------------------------------------------------------
@@ -710,7 +715,9 @@ H5Lcreate_hard_async(const char *app_file, const char *app_func, unsigned app_li
const char *cur_name, hid_t new_loc_id, const char *new_name, hid_t lcpl_id,
hid_t lapl_id, hid_t es_id)
{
- H5VL_object_t *vol_obj = NULL; /* Object for loc_id */
+ H5VL_object_t vol_obj; /* Object for loc_id */
+ H5VL_object_t *vol_obj_ptr = &vol_obj; /* Pointer to object for loc_id */
+ H5VL_object_t **vol_obj_ptr_ptr = &vol_obj_ptr; /* Pointer to object pointer */
void * token = NULL; /* Request token for async operation */
void ** token_ptr = H5_REQUEST_NULL; /* Pointer to request token for async operation */
herr_t ret_value = SUCCEED; /* Return value */
@@ -725,12 +732,12 @@ H5Lcreate_hard_async(const char *app_file, const char *app_func, unsigned app_li
/* Creates a hard link asynchronously */
if (H5L__create_hard_api_common(cur_loc_id, cur_name, new_loc_id, new_name, lcpl_id, lapl_id, token_ptr,
- &vol_obj) < 0)
+ vol_obj_ptr_ptr) < 0)
HGOTO_ERROR(H5E_LINK, H5E_CANTCREATE, FAIL, "unable to asynchronously create hard link")
/* If a token was created, add the token to the event set */
if (NULL != token)
- if (H5ES_insert(es_id, vol_obj->connector, token,
+ if (H5ES_insert(es_id, vol_obj_ptr->connector, token,
H5ARG_TRACE10(FUNC, "*s*sIui*si*siii", app_file, app_func, app_line, cur_loc_id,
cur_name, new_loc_id, new_name, lcpl_id, lapl_id, es_id)) < 0)
HGOTO_ERROR(H5E_LINK, H5E_CANTINSERT, FAIL, "can't insert token into event set")