summaryrefslogtreecommitdiffstats
path: root/src/H5O.c
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2014-08-19 19:19:51 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2014-08-19 19:19:51 (GMT)
commitaff0124b38f2ba19cd06431f756ff5791882dbae (patch)
tree7b00758d1f5f6a45690d21971c868d111a35367c /src/H5O.c
parentffc4b3a7f73e9e808bcb11a5f86ce9d6229f31f8 (diff)
downloadhdf5-aff0124b38f2ba19cd06431f756ff5791882dbae.zip
hdf5-aff0124b38f2ba19cd06431f756ff5791882dbae.tar.gz
hdf5-aff0124b38f2ba19cd06431f756ff5791882dbae.tar.bz2
[svn-r25537] VOL framework changes.
Diffstat (limited to 'src/H5O.c')
-rw-r--r--src/H5O.c109
1 files changed, 44 insertions, 65 deletions
diff --git a/src/H5O.c b/src/H5O.c
index 077957b..147b682 100644
--- a/src/H5O.c
+++ b/src/H5O.c
@@ -240,26 +240,25 @@ H5Oopen(hid_t loc_id, const char *name, hid_t lapl_id)
if(!name || !*name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name")
- loc_params.type = H5VL_OBJECT_BY_NAME;
- loc_params.loc_data.loc_by_name.name = name;
- loc_params.loc_data.loc_by_name.lapl_id = lapl_id;
- loc_params.obj_type = H5I_get_type(loc_id);
-
/* get the file object */
if(NULL == (obj = (void *)H5I_object(loc_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
/* get the plugin pointer */
if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
+ loc_params.type = H5VL_OBJECT_BY_NAME;
+ loc_params.loc_data.loc_by_name.name = name;
+ loc_params.loc_data.loc_by_name.lapl_id = lapl_id;
+ loc_params.obj_type = H5I_get_type(loc_id);
+
/* Open the object through the VOL */
if(NULL == (opened_obj = H5VL_object_open(obj, loc_params, vol_plugin, &opened_type,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL)))
+ H5AC_dxpl_id, H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to open object")
- if ((ret_value = H5VL_object_register(opened_obj, opened_type, vol_plugin, TRUE)) < 0)
+ if((ret_value = H5VL_object_register(opened_obj, opened_type, vol_plugin, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize object handle")
-
done:
FUNC_LEAVE_API(ret_value)
} /* end H5Oopen() */
@@ -332,10 +331,10 @@ H5Oopen_by_idx(hid_t loc_id, const char *group_name, H5_index_t idx_type,
/* Open the object through the VOL */
if(NULL == (opened_obj = H5VL_object_open(obj, loc_params, vol_plugin, &opened_type,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL)))
+ H5AC_dxpl_id, H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to open object")
- if ((ret_value = H5VL_object_register(opened_obj, opened_type, vol_plugin, TRUE)) < 0)
+ if((ret_value = H5VL_object_register(opened_obj, opened_type, vol_plugin, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize object handle")
done:
@@ -403,10 +402,11 @@ H5Oopen_by_addr(hid_t loc_id, haddr_t addr)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* Open the object through the VOL */
- if(NULL == (opened_obj = H5VL_object_open(obj, loc_params, vol_plugin, &opened_type, H5AC_dxpl_id, H5_EVENT_STACK_NULL)))
+ if(NULL == (opened_obj = H5VL_object_open(obj, loc_params, vol_plugin, &opened_type,
+ H5AC_dxpl_id, H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to open object")
- if ((ret_value = H5VL_object_register(opened_obj, opened_type, vol_plugin, TRUE)) < 0)
+ if((ret_value = H5VL_object_register(opened_obj, opened_type, vol_plugin, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize object handle")
done:
@@ -509,9 +509,9 @@ H5Olink(hid_t obj_id, hid_t new_loc_id, const char *new_name, hid_t lcpl_id,
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't set property value for target id")
/* Create the link through the VOL */
- if((ret_value = H5VL_link_create(H5VL_LINK_CREATE_HARD, obj2, loc_params2,
- (vol_plugin1!=NULL ? vol_plugin1 : vol_plugin2),
- lcpl_id, lapl_id, H5AC_dxpl_id, H5_EVENT_STACK_NULL)) < 0)
+ if(H5VL_link_create(H5VL_LINK_CREATE_HARD, obj2, loc_params2,
+ (vol_plugin1!=NULL ? vol_plugin1 : vol_plugin2),
+ lcpl_id, lapl_id, H5AC_dxpl_id, H5_REQUEST_NULL) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to create link")
done:
@@ -561,8 +561,8 @@ H5Oincr_refcount(hid_t object_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* change the ref count through the VOL */
- if(H5VL_object_misc(obj, loc_params, vol_plugin, H5VL_OBJECT_CHANGE_REF_COUNT,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL, 1) < 0)
+ if(H5VL_object_specific(obj, loc_params, vol_plugin, H5VL_OBJECT_CHANGE_REF_COUNT,
+ H5AC_dxpl_id, H5_REQUEST_NULL, 1) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_LINKCOUNT, FAIL, "modifying object link count failed")
done:
@@ -612,8 +612,8 @@ H5Odecr_refcount(hid_t object_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* change the ref count through the VOL */
- if(H5VL_object_misc(obj, loc_params, vol_plugin, H5VL_OBJECT_CHANGE_REF_COUNT,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL, -1) < 0)
+ if(H5VL_object_specific(obj, loc_params, vol_plugin, H5VL_OBJECT_CHANGE_REF_COUNT,
+ H5AC_dxpl_id, H5_REQUEST_NULL, -1) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_LINKCOUNT, FAIL, "modifying object link count failed")
done:
@@ -667,8 +667,8 @@ H5Oexists_by_name(hid_t loc_id, const char *name, hid_t lapl_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* change the ref count through the VOL */
- if(H5VL_object_get(obj, loc_params, vol_plugin, H5VL_OBJECT_EXISTS, H5AC_dxpl_id,
- H5_EVENT_STACK_NULL, &ret_value) < 0)
+ if(H5VL_object_specific(obj, loc_params, vol_plugin, H5VL_OBJECT_EXISTS,
+ H5AC_dxpl_id, H5_REQUEST_NULL, &ret_value) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTGET, FAIL, "unable to determine if '%s' exists", name)
done:
@@ -715,8 +715,8 @@ H5Oget_info(hid_t loc_id, H5O_info_t *oinfo)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* Get the group info through the VOL using the location token */
- if((ret_value = H5VL_object_get(obj, loc_params, vol_plugin, H5VL_OBJECT_GET_INFO,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL, oinfo)) < 0)
+ if(H5VL_object_optional(obj, vol_plugin, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ H5VL_OBJECT_GET_INFO, loc_params, oinfo) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get group info")
done:
@@ -773,8 +773,8 @@ H5Oget_info_by_name(hid_t loc_id, const char *name, H5O_info_t *oinfo, hid_t lap
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* Get the group info through the VOL using the location token */
- if((ret_value = H5VL_object_get(obj, loc_params, vol_plugin, H5VL_OBJECT_GET_INFO,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL, oinfo)) < 0)
+ if(H5VL_object_optional(obj, vol_plugin, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ H5VL_OBJECT_GET_INFO, loc_params, oinfo) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get group info")
done:
@@ -840,8 +840,8 @@ H5Oget_info_by_idx(hid_t loc_id, const char *group_name, H5_index_t idx_type,
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* Get the group info through the VOL using the location token */
- if((ret_value = H5VL_object_get(obj, loc_params, vol_plugin, H5VL_OBJECT_GET_INFO,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL, oinfo)) < 0)
+ if(H5VL_object_optional(obj, vol_plugin, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ H5VL_OBJECT_GET_INFO, loc_params, oinfo) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get group info")
done:
@@ -888,7 +888,8 @@ H5Oset_comment(hid_t obj_id, const char *comment)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* set comment on object through the VOL */
- if(H5VL_object_misc(obj, loc_params, vol_plugin, H5VL_OBJECT_SET_COMMENT, H5AC_dxpl_id, H5_EVENT_STACK_NULL, comment) < 0)
+ if(H5VL_object_optional(obj, vol_plugin, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ H5VL_OBJECT_SET_COMMENT, loc_params, comment) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to set comment value")
done:
@@ -947,7 +948,8 @@ H5Oset_comment_by_name(hid_t loc_id, const char *name, const char *comment,
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* set comment on object through the VOL */
- if(H5VL_object_misc(obj, loc_params, vol_plugin, H5VL_OBJECT_SET_COMMENT, H5AC_dxpl_id, H5_EVENT_STACK_NULL, comment) < 0)
+ if(H5VL_object_optional(obj, vol_plugin, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ H5VL_OBJECT_SET_COMMENT, loc_params, comment) < 0)
HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to set comment value")
done:
@@ -992,8 +994,8 @@ H5Oget_comment(hid_t loc_id, char *comment, size_t bufsize)
if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
- if(H5VL_object_get(obj, loc_params, vol_plugin, H5VL_OBJECT_GET_COMMENT, H5AC_dxpl_id, H5_EVENT_STACK_NULL,
- comment, bufsize, &ret_value) < 0)
+ if(H5VL_object_optional(obj, vol_plugin, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ H5VL_OBJECT_GET_COMMENT, loc_params, comment, bufsize, &ret_value) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get object comment")
done:
@@ -1050,8 +1052,8 @@ H5Oget_comment_by_name(hid_t loc_id, const char *name, char *comment, size_t buf
if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(loc_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
- if(H5VL_object_get(obj, loc_params, vol_plugin, H5VL_OBJECT_GET_COMMENT, H5AC_dxpl_id, H5_EVENT_STACK_NULL,
- comment, bufsize, &ret_value) < 0)
+ if(H5VL_object_optional(obj, vol_plugin, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ H5VL_OBJECT_GET_COMMENT, loc_params, comment, bufsize, &ret_value) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get object info")
done:
@@ -1122,8 +1124,9 @@ H5Ovisit(hid_t obj_id, H5_index_t idx_type, H5_iter_order_t order,
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* iterate over the objects through the VOL */
- if((ret_value = H5VL_object_visit(obj, loc_params, vol_plugin, idx_type, order, op, op_data,
- H5AC_dxpl_id, H5_EVENT_STACK_NULL)) < 0)
+ if((ret_value = H5VL_object_specific(obj, loc_params, vol_plugin, H5VL_OBJECT_VISIT,
+ H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ idx_type, order, op, op_data)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_BADITER, FAIL, "link iteration failed")
done:
@@ -1204,8 +1207,9 @@ H5Ovisit_by_name(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* iterate over the objects through the VOL */
- if((ret_value = H5VL_object_visit(obj, loc_params, vol_plugin, idx_type, order, op,
- op_data, H5AC_dxpl_id, H5_EVENT_STACK_NULL)) < 0)
+ if((ret_value = H5VL_object_specific(obj, loc_params, vol_plugin, H5VL_OBJECT_VISIT,
+ H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ idx_type, order, op, op_data)) < 0)
HGOTO_ERROR(H5E_SYM, H5E_BADITER, FAIL, "link iteration failed")
done:
@@ -1269,12 +1273,6 @@ H5Oclose(hid_t object_id)
break;
} /* end switch */
-#if 0
- /* Close the object through the VOL */
- if(H5VL_object_close(object_id, H5AC_dxpl_id, H5_EVENT_STACK_NULL) < 0)
- HGOTO_ERROR(H5E_SYM, H5E_CANTRELEASE, FAIL, "unable to close object")
-#endif
-
done:
FUNC_LEAVE_API(ret_value)
} /* end H5Oclose() */
@@ -3494,34 +3492,15 @@ H5O_visit(H5G_loc_t *loc, const char *obj_name, H5_index_t idx_type,
{
void *temp_obj = NULL;
H5I_type_t obj_type;
- obj_type = H5I_get_type(obj_id);
- if(NULL == (temp_obj = H5I_remove(obj_id)))
- HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to open object")
- /* Get an atom for the datatype */
- if((obj_id = H5VL_native_register(obj_type, temp_obj, TRUE)) < 0)
- HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register datatype")
- }
-#if 0
- /* if this is a named datatype, we need to create the two-fold datatype
- to be comaptible with the VOL */
- if(H5I_DATATYPE == H5I_get_type(obj_id)) {
- H5T_t *type = NULL;
- void *temp_obj = NULL;
+ obj_type = H5I_get_type(obj_id);
if(NULL == (temp_obj = H5I_remove(obj_id)))
HGOTO_ERROR(H5E_SYM, H5E_CANTOPENOBJ, FAIL, "unable to open object")
- /* Copy the dataset's datatype */
- if(NULL == (type = H5T_copy((H5T_t *)temp_obj, H5T_COPY_TRANSIENT)))
- HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to copy datatype")
-
- H5T_set_vol_object(type, temp_obj);
-
/* Get an atom for the datatype */
- if((obj_id = H5VL_native_register(H5I_DATATYPE, type, TRUE)) < 0)
+ if((obj_id = H5VL_native_register(obj_type, temp_obj, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register datatype")
}
-#endif
/* Make callback for starting object */
if((ret_value = op(obj_id, ".", &oinfo, op_data)) < 0)