summaryrefslogtreecommitdiffstats
path: root/src/H5VLiod_attr.c
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2013-11-13 01:03:49 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2013-11-13 01:03:49 (GMT)
commita052056ef77a2f3e11c6d24d842ee611af56b8b2 (patch)
treee762268555d7b1bf6f4b3ca76d74b60067d5ad3e /src/H5VLiod_attr.c
parented36122a3eabc80aca81ad5c545846a3ed2147ba (diff)
downloadhdf5-a052056ef77a2f3e11c6d24d842ee611af56b8b2.zip
hdf5-a052056ef77a2f3e11c6d24d842ee611af56b8b2.tar.gz
hdf5-a052056ef77a2f3e11c6d24d842ee611af56b8b2.tar.bz2
[svn-r24436] more fixes/updates for IOD integration.
Diffstat (limited to 'src/H5VLiod_attr.c')
-rw-r--r--src/H5VLiod_attr.c293
1 files changed, 170 insertions, 123 deletions
diff --git a/src/H5VLiod_attr.c b/src/H5VLiod_attr.c
index 0e01e6a..2b807ac 100644
--- a/src/H5VLiod_attr.c
+++ b/src/H5VLiod_attr.c
@@ -65,42 +65,43 @@ H5VL_iod_server_attr_create_cb(AXE_engine_t UNUSED axe_engine,
iod_size_t *max_dims; /* MAX dims for IOD */
scratch_pad sp;
iod_checksum_t sp_cs = 0;
+ iod_size_t array_dims[H5S_MAX_RANK], current_dims[H5S_MAX_RANK];
herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI_NOINIT
#if H5VL_IOD_DEBUG
- fprintf(stderr, "Start attribute Create %s on object path %s\n", attr_name, loc_name);
+ fprintf(stderr, "Start attribute create %s at %"PRIu64" with ID %"PRIx64"\n",
+ attr_name, loc_handle.wr_oh, attr_id);
#endif
/* Open the object where the attribute needs to be created. */
- if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name, rtid, &obj_id, &obj_oh) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
+ if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name, rtid,
+ &obj_id, &obj_oh) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
/* Set the IOD array creation parameters */
- array.cell_size = H5Tget_size(input->type_id);
- array.num_dims = H5Sget_simple_extent_ndims(input->space_id);
- if(NULL == (array.current_dims = (iod_size_t *)malloc (sizeof(iod_size_t) * array.num_dims)))
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't allocate dimention size array");
- if(NULL == (max_dims = (iod_size_t *)malloc (sizeof(iod_size_t) * array.num_dims)))
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't allocate dimention size array");
- if(H5Sget_simple_extent_dims(input->space_id, array.current_dims, max_dims) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't get dimentions' sizes");
- array.firstdim_max = max_dims[0];
+ array.cell_size = (uint32_t)H5Tget_size(input->type_id);
+ array.num_dims = (uint32_t)H5Sget_simple_extent_ndims(input->space_id);
+ if(H5Sget_simple_extent_dims(input->space_id, current_dims, array_dims) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "can't get dimentions' sizes");
+ array.firstdim_max = array_dims[0];
+ array.current_dims = current_dims;
array.chunk_dims = NULL;
/* create the attribute */
- if(iod_obj_create(coh, wtid, NULL, IOD_OBJ_ARRAY, NULL, &array, &attr_id, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create Attribute");
+ if(iod_obj_create(coh, wtid, NULL, IOD_OBJ_ARRAY, NULL,
+ &array, &attr_id, NULL) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't create Attribute");
if (iod_obj_open_read(coh, attr_id, NULL, &attr_oh.rd_oh, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't open attribute");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't open attribute");
if (iod_obj_open_write(coh, attr_id, NULL, &attr_oh.wr_oh, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't open attribute");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't open attribute");
/* create the metadata KV object for the attribute */
if(iod_obj_create(coh, wtid, NULL, IOD_OBJ_KV, NULL, NULL, &mdkv_id, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create metadata KV object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't create metadata KV object");
/* set values for the scratch pad object */
sp[0] = mdkv_id;
@@ -112,68 +113,68 @@ H5VL_iod_server_attr_create_cb(AXE_engine_t UNUSED axe_engine,
if(cs_scope & H5_CHECKSUM_IOD) {
sp_cs = H5_checksum_crc64(&sp, sizeof(sp));
if (iod_obj_set_scratch(attr_oh.wr_oh, wtid, &sp, &sp_cs, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't set scratch pad");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't set scratch pad");
}
else {
if (iod_obj_set_scratch(attr_oh.wr_oh, wtid, &sp, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't set scratch pad");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't set scratch pad");
}
/* Open Metadata KV object for write */
if (iod_obj_open_write(coh, mdkv_id, NULL, &mdkv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't create scratch pad");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't create scratch pad");
/* insert object type metadata */
if(H5VL_iod_insert_object_type(mdkv_oh, wtid, H5I_ATTR, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
/* MSC - need to check size of datatype if it fits in
entry otherwise create a BLOB */
/* insert datatype metadata */
if(H5VL_iod_insert_datatype(mdkv_oh, wtid, input->type_id, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
/* insert dataspace metadata */
if(H5VL_iod_insert_dataspace(mdkv_oh, wtid, input->space_id, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
/* close the Metadata KV object */
if(iod_obj_close(mdkv_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
/* if the starting location is not the last component, need to
read the attrkv_id of the last object where attribute needs
to be created */
- if(loc_id != obj_id) {
+ if(loc_id != obj_id || loc_attrkv_id == IOD_OBJ_INVALID) {
/* get scratch pad of the parent */
if(iod_obj_get_scratch(obj_oh.rd_oh, rtid, &sp, &sp_cs, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
if(sp_cs && (cs_scope & H5_CHECKSUM_IOD)) {
/* verify scratch pad integrity */
if(H5VL_iod_verify_scratch_pad(sp, sp_cs) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
}
/* open the attribute KV in scratch pad */
if (iod_obj_open_write(coh, sp[1], NULL /*hints*/, &attr_kv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
else {
/* open the attribute KV */
if (iod_obj_open_write(coh, loc_attrkv_id, NULL /*hints*/, &attr_kv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
/* insert new attribute in scratch pad of current object */
if(H5VL_iod_insert_new_link(attr_kv_oh, wtid, attr_name,
H5L_TYPE_HARD, &attr_id, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
/* close the Attribute KV object */
if(iod_obj_close(attr_kv_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
/* close parent group if it is not the location we started the
traversal into */
@@ -200,8 +201,6 @@ H5VL_iod_server_attr_create_cb(AXE_engine_t UNUSED axe_engine,
HG_Handler_start_output(op_data->hg_handle, &output);
}
- if(max_dims) free(max_dims);
- if(array.current_dims) free(array.current_dims);
input = (attr_create_in_t *)H5MM_xfree(input);
op_data = (op_data_t *)H5MM_xfree(op_data);
@@ -250,47 +249,54 @@ H5VL_iod_server_attr_open_cb(AXE_engine_t UNUSED axe_engine,
FUNC_ENTER_NOAPI_NOINIT
+
#if H5VL_IOD_DEBUG
- fprintf(stderr, "Start attribute Open %s\n", attr_name);
+ fprintf(stderr, "Start attribute open %s at %s (OH %"PRIu64" ID %"PRIx64")\n",
+ attr_name, loc_name, loc_handle.rd_oh.cookie, loc_id);
#endif
/* Open the object where the attribute needs to be opened. */
if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name,
rtid, &obj_id, &obj_oh) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
+ HGOTO_ERROR2(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
+
+#if H5VL_IOD_DEBUG
+ fprintf(stderr, "Attribute is on object (OH %"PRIu64" ID %"PRIx64")\n",
+ obj_oh.rd_oh.cookie, obj_id);
+#endif
/* if the starting location is not the last component, need to
read the attrkv_id of the last object where attribute needs
to be created */
- if(loc_id != obj_id) {
+ if(loc_id != obj_id || loc_attrkv_id == IOD_OBJ_INVALID) {
/* get scratch pad of the object */
if(iod_obj_get_scratch(obj_oh.rd_oh, rtid, &sp, &sp_cs, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
if(sp_cs && (cs_scope & H5_CHECKSUM_IOD)) {
/* verify scratch pad integrity */
if(H5VL_iod_verify_scratch_pad(sp, sp_cs) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
}
/* if attribute KV does not exist, return error*/
if(IOD_OBJ_INVALID == sp[1])
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "Object has no attributes");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "Object has no attributes");
/* open the attribute KV in scratch pad */
if (iod_obj_open_read(coh, sp[1], NULL /*hints*/, &attr_kv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
else {
/* open the attribute KV */
if (iod_obj_open_read(coh, loc_attrkv_id, NULL /*hints*/, &attr_kv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
/* get attribute ID */
if(H5VL_iod_get_metadata(attr_kv_oh, rtid, H5VL_IOD_LINK,
attr_name, NULL, NULL, &iod_link) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't retrieve Attribute ID from parent KV store");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "can't retrieve Attribute ID from parent KV store");
HDassert(iod_link.link_type == H5L_TYPE_HARD);
attr_id = iod_link.u.iod_id;
@@ -305,38 +311,41 @@ H5VL_iod_server_attr_open_cb(AXE_engine_t UNUSED axe_engine,
/* open the attribute */
if (iod_obj_open_read(coh, attr_id, NULL /*hints*/, &attr_oh.rd_oh, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
if (iod_obj_open_write(coh, attr_id, NULL /*hints*/, &attr_oh.wr_oh, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
/* get scratch pad of the attribute */
if(iod_obj_get_scratch(attr_oh.rd_oh, rtid, &sp, &sp_cs, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
if(sp_cs && (cs_scope & H5_CHECKSUM_IOD)) {
/* verify scratch pad integrity */
if(H5VL_iod_verify_scratch_pad(sp, sp_cs) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
}
/* open the metadata scratch pad of the attribute */
if (iod_obj_open_read(coh, sp[0], NULL /*hints*/, &mdkv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_FILE, H5E_CANTINIT, FAIL, "can't open scratch pad");
- if(H5VL_iod_get_metadata(mdkv_oh, rtid, H5VL_IOD_DATATYPE, H5VL_IOD_KEY_OBJ_DATATYPE,
+ if(H5VL_iod_get_metadata(mdkv_oh, rtid, H5VL_IOD_DATATYPE,
+ H5VL_IOD_KEY_OBJ_DATATYPE,
NULL, NULL, &output.type_id) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve datatype");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve datatype");
- if(H5VL_iod_get_metadata(mdkv_oh, rtid, H5VL_IOD_DATASPACE, H5VL_IOD_KEY_OBJ_DATASPACE,
+ if(H5VL_iod_get_metadata(mdkv_oh, rtid, H5VL_IOD_DATASPACE,
+ H5VL_IOD_KEY_OBJ_DATASPACE,
NULL, NULL, &output.space_id) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve dataspace");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve dataspace");
/* close the metadata scratch pad */
if(iod_obj_close(mdkv_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
output.iod_id = attr_id;
output.mdkv_id = sp[0];
+ output.acpl_id = H5P_ATTRIBUTE_CREATE_DEFAULT;
output.iod_oh.rd_oh.cookie = attr_oh.rd_oh.cookie;
output.iod_oh.wr_oh.cookie = attr_oh.wr_oh.cookie;
@@ -413,28 +422,28 @@ H5VL_iod_server_attr_read_cb(AXE_engine_t UNUSED axe_engine,
/* open the attribute if we don't have the handle yet */
if(iod_oh.cookie == IOD_OH_UNDEFINED) {
if (iod_obj_open_read(coh, iod_id, NULL /*hints*/, &iod_oh, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
opened_locally = TRUE;
}
size = HG_Bulk_handle_get_size(bulk_handle);
if(NULL == (buf = malloc(size)))
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't allocate read buffer");
+ HGOTO_ERROR2(H5E_SYM, H5E_NOSPACE, FAIL, "can't allocate read buffer");
/* MSC - Not needed if dataspace is available */
#if 0
/* open the metadata scratch pad of the attribute */
if (iod_obj_open_read(coh, mdkv_id, NULL /*hints*/, &mdkv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_FILE, H5E_CANTINIT, FAIL, "can't open scratch pad");
if(H5VL_iod_get_metadata(mdkv_oh, rtid, H5VL_IOD_DATASPACE, H5VL_IOD_KEY_OBJ_DATASPACE,
NULL, NULL, &space_id) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve dataspace");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve dataspace");
/* close the metadata scratch pad */
if(iod_obj_close(mdkv_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
#endif
/* set the memory descriptor */
@@ -447,7 +456,7 @@ H5VL_iod_server_attr_read_cb(AXE_engine_t UNUSED axe_engine,
/* get the rank of the dataspace */
if((ndims = H5Sget_simple_extent_ndims(space_id)) < 0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get dataspace dimesnsion");
+ HGOTO_ERROR2(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get dataspace dimesnsion");
hslabs.start = (iod_size_t *)malloc(sizeof(iod_size_t) * ndims);
hslabs.stride = (iod_size_t *)malloc(sizeof(iod_size_t) * ndims);
@@ -456,31 +465,33 @@ H5VL_iod_server_attr_read_cb(AXE_engine_t UNUSED axe_engine,
/* generate the descriptor */
if(H5VL_iod_get_file_desc(space_id, &num_descriptors, &hslabs) < 0)
- HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "unable to generate IOD file descriptor from dataspace selection");
+ HGOTO_ERROR2(H5E_DATASPACE, H5E_CANTGET, FAIL, "unable to generate IOD file descriptor from dataspace selection");
/* set the file descriptor */
file_desc = hslabs;
/* read from array object */
if(iod_array_read(iod_oh, rtid, NULL, mem_desc, &file_desc, &iod_cs, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_READERROR, FAIL, "can't read from array object");
+ HGOTO_ERROR2(H5E_SYM, H5E_READERROR, FAIL, "can't read from array object");
+ /* MSC - NEED IOD Checksums
if(cs_scope & H5_CHECKSUM_MEMORY) {
attr_cs = H5_checksum_crc64(buf, size);
if(attr_cs != iod_cs)
- HGOTO_ERROR(H5E_SYM, H5E_READERROR, FAIL, "Data corruption detected when reading attribute");
+ HGOTO_ERROR2(H5E_SYM, H5E_READERROR, FAIL, "Data corruption detected when reading attribute");
}
+ */
/* Create a new block handle to write the data */
HG_Bulk_block_handle_create(buf, size, HG_BULK_READ_ONLY, &bulk_block_handle);
/* Write bulk data here and wait for the data to be there */
if(HG_SUCCESS != HG_Bulk_write_all(dest, bulk_handle, bulk_block_handle, &bulk_request))
- HGOTO_ERROR(H5E_SYM, H5E_READERROR, FAIL, "can't read from array object");
+ HGOTO_ERROR2(H5E_SYM, H5E_READERROR, FAIL, "can't read from array object");
/* wait for it to complete */
if(HG_SUCCESS != HG_Bulk_wait(bulk_request, HG_MAX_IDLE_TIME, HG_STATUS_IGNORE))
- HGOTO_ERROR(H5E_SYM, H5E_READERROR, FAIL, "can't read from array object");
+ HGOTO_ERROR2(H5E_SYM, H5E_READERROR, FAIL, "can't read from array object");
done:
#if H5VL_IOD_DEBUG
@@ -508,7 +519,7 @@ done:
/* close the attribute if we opened it in this routine */
if(opened_locally) {
if(iod_obj_close(iod_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close Array object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close Array object");
}
FUNC_LEAVE_NOAPI_VOID
@@ -565,26 +576,27 @@ H5VL_iod_server_attr_write_cb(AXE_engine_t UNUSED axe_engine,
/* open the attribute if we don't have the handle yet */
if(iod_oh.cookie == IOD_OH_UNDEFINED) {
if (iod_obj_open_write(coh, iod_id, NULL /*hints*/, &iod_oh, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
+ opened_locally = TRUE;
}
/* Read bulk data here and wait for the data to be here */
size = HG_Bulk_handle_get_size(bulk_handle);
if(NULL == (buf = malloc(size)))
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't allocate read buffer");
+ HGOTO_ERROR2(H5E_SYM, H5E_NOSPACE, FAIL, "can't allocate read buffer");
HG_Bulk_block_handle_create(buf, size, HG_BULK_READWRITE, &bulk_block_handle);
/* Write bulk data here and wait for the data to be there */
if(HG_SUCCESS != HG_Bulk_read_all(source, bulk_handle, bulk_block_handle, &bulk_request))
- HGOTO_ERROR(H5E_SYM, H5E_WRITEERROR, FAIL, "can't get data from function shipper");
+ HGOTO_ERROR2(H5E_SYM, H5E_WRITEERROR, FAIL, "can't get data from function shipper");
/* wait for it to complete */
if(HG_SUCCESS != HG_Bulk_wait(bulk_request, HG_MAX_IDLE_TIME, HG_STATUS_IGNORE))
- HGOTO_ERROR(H5E_SYM, H5E_WRITEERROR, FAIL, "can't get data from function shipper");
+ HGOTO_ERROR2(H5E_SYM, H5E_WRITEERROR, FAIL, "can't get data from function shipper");
/* free the bds block handle */
if(HG_SUCCESS != HG_Bulk_block_handle_free(bulk_block_handle))
- HGOTO_ERROR(H5E_SYM, H5E_WRITEERROR, FAIL, "can't free bds block handle");
+ HGOTO_ERROR2(H5E_SYM, H5E_WRITEERROR, FAIL, "can't free bds block handle");
#if H5VL_IOD_DEBUG
{
@@ -602,15 +614,15 @@ H5VL_iod_server_attr_write_cb(AXE_engine_t UNUSED axe_engine,
#if 0
/* open the metadata scratch pad of the attribute */
if (iod_obj_open_read(coh, mdkv_id, NULL /*hints*/, &mdkv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_FILE, H5E_CANTINIT, FAIL, "can't open scratch pad");
if(H5VL_iod_get_metadata(mdkv_oh, rtid, H5VL_IOD_DATASPACE, H5VL_IOD_KEY_OBJ_DATASPACE,
NULL, NULL, &space_id) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve dataspace");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "failed to retrieve dataspace");
/* close the metadata scratch pad */
if(iod_obj_close(mdkv_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
#endif
/* set the memory descriptor */
@@ -623,7 +635,7 @@ H5VL_iod_server_attr_write_cb(AXE_engine_t UNUSED axe_engine,
/* get the rank of the dataspace */
if((ndims = H5Sget_simple_extent_ndims(space_id)) < 0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get dataspace dimesnsion");
+ HGOTO_ERROR2(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get dataspace dimesnsion");
hslabs.start = (iod_size_t *)malloc(sizeof(iod_size_t) * ndims);
hslabs.stride = (iod_size_t *)malloc(sizeof(iod_size_t) * ndims);
@@ -632,7 +644,7 @@ H5VL_iod_server_attr_write_cb(AXE_engine_t UNUSED axe_engine,
/* generate the descriptor */
if(H5VL_iod_get_file_desc(space_id, &num_descriptors, &hslabs) < 0)
- HGOTO_ERROR(H5E_DATASPACE, H5E_CANTGET, FAIL, "unable to generate IOD file descriptor from dataspace selection");
+ HGOTO_ERROR2(H5E_DATASPACE, H5E_CANTGET, FAIL, "unable to generate IOD file descriptor from dataspace selection");
/* set the file descriptor */
file_desc = hslabs;
@@ -642,12 +654,12 @@ H5VL_iod_server_attr_write_cb(AXE_engine_t UNUSED axe_engine,
/* write from array object */
if(iod_array_write(iod_oh, wtid, NULL, mem_desc, &file_desc, &attr_cs, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_WRITEERROR, FAIL, "can't write to array object");
+ HGOTO_ERROR2(H5E_SYM, H5E_WRITEERROR, FAIL, "can't write to array object");
}
else {
/* write from array object */
if(iod_array_write(iod_oh, wtid, NULL, mem_desc, &file_desc, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_WRITEERROR, FAIL, "can't write to array object");
+ HGOTO_ERROR2(H5E_SYM, H5E_WRITEERROR, FAIL, "can't write to array object");
}
done:
@@ -674,7 +686,7 @@ done:
/* close the attribute if we opened it in this routine */
if(opened_locally) {
if(iod_obj_close(iod_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close Array object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close Array object");
}
FUNC_LEAVE_NOAPI_VOID
} /* end H5VL_iod_server_attr_write_cb() */
@@ -724,18 +736,19 @@ H5VL_iod_server_attr_exists_cb(AXE_engine_t UNUSED axe_engine,
#endif
/* Open the object where the attribute needs to be checked. */
- if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name, rtid, &obj_id, &obj_oh) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
+ if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name, rtid,
+ &obj_id, &obj_oh) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
if(obj_id != loc_id) {
/* get scratch pad of the parent */
if(iod_obj_get_scratch(obj_oh.rd_oh, rtid, &sp, &sp_cs, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
if(sp_cs && (cs_scope & H5_CHECKSUM_IOD)) {
/* verify scratch pad integrity */
if(H5VL_iod_verify_scratch_pad(sp, sp_cs) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
}
/* if attribute KV does not exist, return false*/
@@ -746,12 +759,12 @@ H5VL_iod_server_attr_exists_cb(AXE_engine_t UNUSED axe_engine,
/* open the attribute KV in scratch pad */
if (iod_obj_open_read(coh, sp[1], NULL /*hints*/, &attr_kv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
else {
/* open the attribute KV */
if (iod_obj_open_read(coh, input->loc_attrkv_id, NULL /*hints*/, &attr_kv_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
/* close parent group if it is not the location we started the
@@ -822,6 +835,8 @@ H5VL_iod_server_attr_rename_cb(AXE_engine_t UNUSED axe_engine,
iod_kv_t kv; /* KV entry */
H5VL_iod_link_t iod_link;
scratch_pad sp;
+ iod_ret_t ret;
+ iod_checksum_t cs;
iod_checksum_t sp_cs = 0;
herr_t ret_value = SUCCEED;
@@ -832,36 +847,37 @@ H5VL_iod_server_attr_rename_cb(AXE_engine_t UNUSED axe_engine,
#endif
/* Open the object where the attribute needs to be checked. */
- if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name, rtid, &obj_id, &obj_oh) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
+ if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name,
+ rtid, &obj_id, &obj_oh) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
- if(loc_id != obj_id) {
+ if(loc_id != obj_id || IOD_OBJ_INVALID == input->loc_attrkv_id) {
/* get scratch pad of the parent */
if(iod_obj_get_scratch(obj_oh.rd_oh, rtid, &sp, &sp_cs, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
if(sp_cs && (cs_scope & H5_CHECKSUM_IOD)) {
/* verify scratch pad integrity */
if(H5VL_iod_verify_scratch_pad(sp, sp_cs) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
}
/* if attribute KV does not exist, return error*/
if(IOD_OBJ_INVALID == sp[1])
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "Object has no attributes");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "Object has no attributes");
/* open the attribute KV in scratch pad */
if (iod_obj_open_read(coh, sp[1], NULL /*hints*/, &attr_kv_oh.rd_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
if (iod_obj_open_write(coh, sp[1], NULL /*hints*/, &attr_kv_oh.wr_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
else {
/* open the attribute KV */
if (iod_obj_open_read(coh, input->loc_attrkv_id, NULL /*hints*/, &attr_kv_oh.rd_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
if (iod_obj_open_write(coh, input->loc_attrkv_id, NULL /*hints*/, &attr_kv_oh.wr_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
/* close parent group if it is not the location we started the
@@ -873,7 +889,7 @@ H5VL_iod_server_attr_rename_cb(AXE_engine_t UNUSED axe_engine,
/* get attribute ID */
if(H5VL_iod_get_metadata(attr_kv_oh.rd_oh, rtid, H5VL_IOD_LINK,
old_name, NULL, NULL, &iod_link) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't retrieve Attribute ID from parent KV store");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "can't retrieve Attribute ID from parent KV store");
HDassert(iod_link.link_type == H5L_TYPE_HARD);
attr_id = iod_link.u.iod_id;
@@ -882,19 +898,21 @@ H5VL_iod_server_attr_rename_cb(AXE_engine_t UNUSED axe_engine,
kv.key = (void *)old_name;
kv.key_len = strlen(old_name);
kvs.kv = &kv;
+ kvs.cs = &cs;
+ kvs.ret = &ret;
if(iod_kv_unlink_keys(attr_kv_oh.wr_oh, wtid, NULL, 1, &kvs, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "Unable to unlink KV pair");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTDEC, FAIL, "Unable to unlink KV pair");
/* insert attribute with new name */
if(H5VL_iod_insert_new_link(attr_kv_oh.wr_oh, wtid, new_name,
H5L_TYPE_HARD, &attr_id, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't insert KV value");
/* close the Attribute KV object */
if(iod_obj_close(attr_kv_oh.rd_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
if(iod_obj_close(attr_kv_oh.wr_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
done:
@@ -937,6 +955,7 @@ H5VL_iod_server_attr_remove_cb(AXE_engine_t UNUSED axe_engine,
iod_obj_id_t loc_id = input->loc_id; /* The ID of the current location object */
iod_handles_t obj_oh; /* current object handle accessed */
iod_handles_t attr_kv_oh; /* KV handle holding attributes for object */
+ iod_handle_t attr_oh;
iod_obj_id_t obj_id, attr_id;
const char *loc_name = input->path; /* path to start hierarchy traversal */
const char *attr_name = input->attr_name; /* attribute's name */
@@ -948,6 +967,8 @@ H5VL_iod_server_attr_remove_cb(AXE_engine_t UNUSED axe_engine,
H5VL_iod_link_t iod_link;
scratch_pad sp;
iod_checksum_t sp_cs = 0;
+ iod_ret_t ret;
+ iod_checksum_t cs;
herr_t ret_value = SUCCEED;
FUNC_ENTER_NOAPI_NOINIT
@@ -957,36 +978,37 @@ H5VL_iod_server_attr_remove_cb(AXE_engine_t UNUSED axe_engine,
#endif
/* Open the object where the attribute needs to be removed. */
- if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name, rtid, &obj_id, &obj_oh) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
+ if(H5VL_iod_server_open_path(coh, loc_id, loc_handle, loc_name, rtid,
+ &obj_id, &obj_oh) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_NOSPACE, FAIL, "can't open object");
if(loc_id != obj_id) {
/* get scratch pad of the parent */
if(iod_obj_get_scratch(obj_oh.rd_oh, rtid, &sp, &sp_cs, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
if(sp_cs && (cs_scope & H5_CHECKSUM_IOD)) {
/* verify scratch pad integrity */
if(H5VL_iod_verify_scratch_pad(sp, sp_cs) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
}
/* if attribute KV does not exist, return error*/
if(IOD_OBJ_INVALID == sp[1])
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "Object has no attributes");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "Object has no attributes");
/* open the attribute KV in scratch pad */
if (iod_obj_open_read(coh, sp[1], NULL /*hints*/, &attr_kv_oh.rd_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
if (iod_obj_open_write(coh, sp[1], NULL /*hints*/, &attr_kv_oh.wr_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
else {
/* open the attribute KV */
if (iod_obj_open_read(coh, input->loc_attrkv_id, NULL /*hints*/, &attr_kv_oh.rd_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
if (iod_obj_open_write(coh, input->loc_attrkv_id, NULL /*hints*/, &attr_kv_oh.wr_oh, NULL) < 0)
- HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't open scratch pad");
}
/* close parent group if it is not the location we started the
@@ -998,25 +1020,56 @@ H5VL_iod_server_attr_remove_cb(AXE_engine_t UNUSED axe_engine,
/* get attribute ID */
if(H5VL_iod_get_metadata(attr_kv_oh.rd_oh, rtid, H5VL_IOD_LINK,
attr_name, NULL, NULL, &iod_link) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't retrieve Attribute ID from parent KV store");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTGET, FAIL, "can't retrieve Attribute ID from parent KV store");
HDassert(iod_link.link_type == H5L_TYPE_HARD);
attr_id = iod_link.u.iod_id;
+ /* remove metadata KV of attribute */
+ /* open the attribute */
+ if (iod_obj_open_read(coh, attr_id, NULL /*hints*/, &attr_oh, NULL) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't open current group");
+
+ /* get scratch pad of the attribute */
+ if(iod_obj_get_scratch(attr_oh, rtid, &sp, &sp_cs, NULL) < 0)
+ HGOTO_ERROR2(H5E_ATTR, H5E_CANTINIT, FAIL, "can't get scratch pad for object");
+
+ if(sp_cs && (cs_scope & H5_CHECKSUM_IOD)) {
+ /* verify scratch pad integrity */
+ if(H5VL_iod_verify_scratch_pad(sp, sp_cs) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "Scratch Pad failed integrity check");
+ }
+
+ ret = iod_obj_unlink(coh, sp[0], wtid, NULL);
+ if(ret < 0) {
+ fprintf(stderr, "ret %d error %s\n", ret, strerror(-ret));
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTDEC, FAIL, "Unable to unlink MDKV of attribute object");
+ }
+
+ /* close the attribute oh */
+ if(iod_obj_close(attr_oh, NULL, NULL) < 0)
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+
/* remove attribute */
kv.key = (void *)attr_name;
kv.key_len = strlen(attr_name);
kvs.kv = &kv;
+ kvs.cs = &cs;
+ kvs.ret = &ret;
if(iod_kv_unlink_keys(attr_kv_oh.wr_oh, wtid, NULL, 1, &kvs, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "Unable to unlink KV pair");
- if(iod_obj_unlink(coh, attr_id, wtid, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTDEC, FAIL, "Unable to unlink object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTDEC, FAIL, "Unable to unlink KV pair");
+
+ ret = iod_obj_unlink(coh, attr_id, wtid, NULL);
+ if(ret < 0) {
+ fprintf(stderr, "ret %d error %s\n", ret, strerror(-ret));
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTDEC, FAIL, "Unable to unlink object");
+ }
/* close the Attribute KV object */
if(iod_obj_close(attr_kv_oh.rd_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
if(iod_obj_close(attr_kv_oh.wr_oh, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object");
done:
#if H5VL_IOD_DEBUG
@@ -1060,20 +1113,14 @@ H5VL_iod_server_attr_close_cb(AXE_engine_t UNUSED axe_engine,
FUNC_ENTER_NOAPI_NOINIT
#if H5VL_IOD_DEBUG
- fprintf(stderr, "Start attribute Close\n");
-#endif
-
-#if 0
- if(IOD_OH_UNDEFINED == iod_oh.wr_oh.cookie ||
- IOD_OH_UNDEFINED == iod_oh.rd_oh.cookie) {
- HGOTO_ERROR(H5E_SYM, H5E_CANTFREE, FAIL, "can't close object with invalid handle");
- }
+ fprintf(stderr, "Start attribute Close %"PRIu64" %"PRIu64"\n",
+ iod_oh.rd_oh, iod_oh.wr_oh);
#endif
if((iod_obj_close(iod_oh.rd_oh, NULL, NULL)) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
if((iod_obj_close(iod_oh.wr_oh, NULL, NULL)) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
+ HGOTO_ERROR2(H5E_SYM, H5E_CANTINIT, FAIL, "can't close object");
done:
#if H5VL_IOD_DEBUG