summaryrefslogtreecommitdiffstats
path: root/src/H5F.c
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2014-09-05 21:36:55 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2014-09-05 21:36:55 (GMT)
commit05d51c036140f94a07efb75aab9675b3b4bd5ef0 (patch)
tree5fe046db1c355df5c771077164ba6d6c1f272866 /src/H5F.c
parentf2e6cec0728a75f5982e3b6d91f0ce823d1206a6 (diff)
downloadhdf5-05d51c036140f94a07efb75aab9675b3b4bd5ef0.zip
hdf5-05d51c036140f94a07efb75aab9675b3b4bd5ef0.tar.gz
hdf5-05d51c036140f94a07efb75aab9675b3b4bd5ef0.tar.bz2
[svn-r25575] cleanup H5I usage in VOL by removing the use of the aux pointer and
make a higher level wrapper object around all VOL objects that includes the VOL information.
Diffstat (limited to 'src/H5F.c')
-rw-r--r--src/H5F.c313
1 files changed, 112 insertions, 201 deletions
diff --git a/src/H5F.c b/src/H5F.c
index 922fd45..363fef5 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -69,14 +69,17 @@
/* Local Variables */
/*******************/
+/* Declare a free list to manage the H5VL_t struct */
+H5FL_EXTERN(H5VL_t);
+/* Declare a free list to manage the H5VL_object_t struct */
+H5FL_EXTERN(H5VL_object_t);
/* File ID class */
static const H5I_class_t H5I_FILE_CLS[1] = {{
H5I_FILE, /* ID class value */
0, /* Class flags */
0, /* # of reserved IDs for class */
- NULL, /* Callback routine for closing objects of this class */
- (H5I_free2_t)H5F_close_file /* Callback routine for closing auxilary objects of this class */
+ (H5I_free_t)H5F_close_file /* Callback routine for closing objects of this class */
}};
@@ -96,6 +99,7 @@ static herr_t
H5F__init_pub_interface(void)
{
herr_t ret_value = SUCCEED; /* Return value */
+
FUNC_ENTER_STATIC
/*
@@ -204,22 +208,18 @@ H5F_term_interface(void)
hid_t
H5Fget_create_plist(hid_t file_id)
{
- H5VL_t *vol_plugin = NULL;
- void *obj = NULL;
- hid_t ret_value; /* Return value */
+ H5VL_object_t *obj = NULL;
+ hid_t ret_value; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE1("i", "i", file_id);
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
- if(H5VL_file_get(obj, vol_plugin->cls, H5VL_FILE_GET_FCPL, H5AC_dxpl_id,
- H5_REQUEST_NULL, &ret_value) < 0)
+ if(H5VL_file_get(obj->vol_obj, obj->vol_info->vol_cls, H5VL_FILE_GET_FCPL,
+ H5AC_dxpl_id, H5_REQUEST_NULL, &ret_value) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file creation properties")
done:
@@ -251,23 +251,19 @@ done:
hid_t
H5Fget_access_plist(hid_t file_id)
{
- H5VL_t *vol_plugin;
- void *file;
- hid_t fapl_id = FAIL;
- hid_t ret_value; /* Return value */
+ H5VL_object_t *file = NULL;
+ hid_t fapl_id = FAIL;
+ hid_t ret_value; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE1("i", "i", file_id);
/* get the file object */
- if(NULL == (file = (void *)H5I_object(file_id)))
+ if(NULL == (file = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
- if(H5VL_file_get(file, vol_plugin->cls, H5VL_FILE_GET_FAPL, H5AC_dxpl_id,
- H5_REQUEST_NULL, &fapl_id) < 0)
+ if(H5VL_file_get(file->vol_obj, file->vol_info->vol_cls, H5VL_FILE_GET_FAPL,
+ H5AC_dxpl_id, H5_REQUEST_NULL, &fapl_id) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file creation properties")
ret_value = fapl_id;
@@ -328,18 +324,14 @@ H5Fget_obj_count(hid_t file_id, unsigned types)
H5TRACE2("Zs", "iIu", file_id, types);
if(file_id != (hid_t)H5F_OBJ_ALL) {
- H5VL_t *vol_plugin;
- void *obj;
+ H5VL_object_t *obj;
/* get the file object */
- if(NULL == (obj = (void *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file id")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
- if(H5VL_file_get(obj, vol_plugin->cls, H5VL_FILE_GET_OBJ_COUNT, H5AC_dxpl_id,
- H5_REQUEST_NULL, types, &ret_value) < 0)
+ if(H5VL_file_get(obj->vol_obj, obj->vol_info->vol_cls, H5VL_FILE_GET_OBJ_COUNT,
+ H5AC_dxpl_id, H5_REQUEST_NULL, types, &ret_value) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get object count in file(s)")
}
/* iterate over all open files and get the obj count for each */
@@ -440,18 +432,14 @@ H5Fget_obj_ids(hid_t file_id, unsigned types, size_t max_objs, hid_t *oid_list)
/* Check arguments */
if(file_id != (hid_t)H5F_OBJ_ALL) {
- H5VL_t *vol_plugin;
- void *obj;
+ H5VL_object_t *obj;
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* get the file object */
- if(NULL == (obj = (void *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_get(obj, vol_plugin->cls, H5VL_FILE_GET_OBJ_IDS, H5AC_dxpl_id, H5_REQUEST_NULL,
- types, max_objs, oid_list, &ret_value) < 0)
+ if(H5VL_file_get(obj->vol_obj, obj->vol_info->vol_cls, H5VL_FILE_GET_OBJ_IDS,
+ H5AC_dxpl_id, H5_REQUEST_NULL, types, max_objs, oid_list, &ret_value) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get object count in file(s)")
}
/* iterate over all open files and get the obj count for each */
@@ -507,8 +495,7 @@ done:
herr_t
H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void **file_handle)
{
- H5VL_t *vol_plugin;
- void *obj;
+ H5VL_object_t *obj = NULL;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
@@ -518,15 +505,11 @@ H5Fget_vfd_handle(hid_t file_id, hid_t fapl, void **file_handle)
if(!file_handle)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid file handle pointer")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_optional(obj, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(obj->vol_obj, obj->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_VFD_HANDLE, file_handle, fapl) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file handle")
@@ -608,11 +591,11 @@ done:
hid_t
H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
{
- void *file = NULL; /* file token from VOL plugin */
- H5VL_t *vol_plugin = NULL; /* VOL plugin information */
+ void *file; /* file object returned from the plugin */
H5P_genplist_t *plist; /* Property list pointer */
hid_t plugin_id; /* VOL plugin identigier attached to fapl_id */
H5VL_class_t *vol_cls = NULL; /* VOL Class structure for callback info */
+ H5VL_t *vol_info = NULL; /* VOL info struct */
hid_t ret_value; /* return value */
FUNC_ENTER_API(FAIL)
@@ -658,16 +641,16 @@ H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
H5AC_dxpl_id, H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to create file")
- /* Build the vol plugin struct */
- if(NULL == (vol_plugin = (H5VL_t *)H5MM_calloc(sizeof(H5VL_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
-
- vol_plugin->cls = vol_cls;
- vol_plugin->nrefs = 0;
- vol_plugin->id = plugin_id;
+ /* setup VOL info struct */
+ if(NULL == (vol_info = H5FL_CALLOC(H5VL_t)))
+ HGOTO_ERROR(H5E_FILE, H5E_NOSPACE, FAIL, "can't allocate VL info struct")
+ vol_info->vol_cls = vol_cls;
+ vol_info->vol_id = plugin_id;
+ if(H5I_inc_ref(vol_info->vol_id, FALSE) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTINC, FAIL, "unable to increment ref count on VOL plugin")
- /* Get an atom for the file with the VOL information as the auxilary struct*/
- if((ret_value = H5VL_register_id(H5I_FILE, file, vol_plugin, TRUE)) < 0)
+ /* Get an atom for the file */
+ if((ret_value = H5VL_register_id(H5I_FILE, file, vol_info, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize file handle")
done:
@@ -718,11 +701,11 @@ done:
hid_t
H5Fopen(const char *filename, unsigned flags, hid_t fapl_id)
{
- void *file = NULL; /* file token from VOL plugin */
- H5VL_t *vol_plugin = NULL; /* VOL plugin information */
+ void *file; /* file object returned from the plugin */
H5P_genplist_t *plist; /* Property list pointer */
hid_t plugin_id; /* VOL plugin identigier attached to fapl_id */
H5VL_class_t *vol_cls = NULL; /* VOL Class structure for callback info */
+ H5VL_t *vol_info = NULL; /* VOL info struct */
hid_t ret_value; /* return value */
FUNC_ENTER_API(FAIL)
@@ -754,16 +737,16 @@ H5Fopen(const char *filename, unsigned flags, hid_t fapl_id)
if(NULL == (file = H5VL_file_open(vol_cls, filename, flags, fapl_id, H5AC_dxpl_id, H5_REQUEST_NULL)))
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to create file")
- /* Build the vol plugin struct */
- if(NULL == (vol_plugin = (H5VL_t *)H5MM_calloc(sizeof(H5VL_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed")
+ /* setup VOL info struct */
+ if(NULL == (vol_info = H5FL_CALLOC(H5VL_t)))
+ HGOTO_ERROR(H5E_FILE, H5E_NOSPACE, FAIL, "can't allocate VL info struct")
+ vol_info->vol_cls = vol_cls;
+ vol_info->vol_id = plugin_id;
+ if(H5I_inc_ref(vol_info->vol_id, FALSE) < 0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTINC, FAIL, "unable to increment ref count on VOL plugin")
- vol_plugin->cls = vol_cls;
- vol_plugin->nrefs = 0;
- vol_plugin->id = plugin_id;
-
- /* Get an atom for the file with the VOL information as the auxilary struct*/
- if((ret_value = H5VL_register_id(H5I_FILE, file, vol_plugin, TRUE)) < 0)
+ /* Get an atom for the file */
+ if((ret_value = H5VL_register_id(H5I_FILE, file, vol_info, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize file handle")
done:
@@ -788,8 +771,7 @@ done:
herr_t
H5Fflush(hid_t object_id, H5F_scope_t scope)
{
- H5VL_t *vol_plugin;
- void *obj;
+ H5VL_object_t *obj = NULL;
H5I_type_t obj_type;
herr_t ret_value = SUCCEED; /* Return value */
@@ -802,15 +784,11 @@ H5Fflush(hid_t object_id, H5F_scope_t scope)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
}
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(object_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5VL_get_object(object_id)))
+ if(NULL == (obj = H5VL_get_object(object_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_specific(obj, vol_plugin->cls, H5VL_FILE_FLUSH, H5AC_dxpl_id,
+ if(H5VL_file_specific(obj->vol_obj, obj->vol_info->vol_cls, H5VL_FILE_FLUSH, H5AC_dxpl_id,
H5_REQUEST_NULL, obj_type, scope) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "unable to flush file")
@@ -876,20 +854,21 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5F_close_file(void *file, H5VL_t *vol_plugin)
+H5F_close_file(void *_file)
{
- herr_t ret_value = SUCCEED; /* Return value */
+ H5VL_object_t *file = (H5VL_object_t *)_file;
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT
/* Close the file through the VOL*/
- if((ret_value = H5VL_file_close(file, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL)) < 0)
+ if((ret_value = H5VL_file_close(file->vol_obj, file->vol_info->vol_cls,
+ H5AC_dxpl_id, H5_REQUEST_NULL)) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
- /* decrement ref count on VOL ID */
- if(H5VL_free_id(vol_plugin) < 0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTDEC, FAIL, "unable to decrement ref count on VOL plugin")
-
+ /* free file */
+ if(H5VL_free_object(file) < 0)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTDEC, FAIL, "unable to free VOL object")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5F_close_file() */
@@ -920,31 +899,26 @@ done:
hid_t
H5Freopen(hid_t file_id)
{
- H5VL_t *vol_plugin;
- void *obj;
- void *file; /*file token from VOL plugin */
- hid_t ret_value;
+ H5VL_object_t *obj = NULL;
+ void *file; /* file token from VOL plugin */
+ hid_t ret_value;
FUNC_ENTER_API(FAIL)
H5TRACE1("i", "i", file_id);
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_optional(obj, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(obj->vol_obj, obj->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_REOPEN, &file) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to reopen file")
if (NULL == file)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to reopen file")
- /* Get an atom for the file with the VOL information as the auxilary struct*/
- if((ret_value = H5VL_register_id(H5I_FILE, file, vol_plugin, TRUE)) < 0)
+ /* Get an atom for the file */
+ if((ret_value = H5VL_register_id(H5I_FILE, file, obj->vol_info, TRUE)) < 0)
HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize file handle")
done:
@@ -975,18 +949,13 @@ H5Fget_intent(hid_t file_id, unsigned *intent_flags)
/* If no intent flags were passed in, exit quietly */
if(intent_flags) {
- H5VL_t *vol_plugin;
- void *obj;
-
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
+ H5VL_object_t *obj = NULL;
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if((ret_value = H5VL_file_get(obj, vol_plugin->cls, H5VL_FILE_GET_INTENT,
+ if((ret_value = H5VL_file_get(obj->vol_obj, obj->vol_info->vol_cls, H5VL_FILE_GET_INTENT,
H5AC_dxpl_id, H5_REQUEST_NULL, intent_flags)) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file intent")
}
@@ -1013,22 +982,17 @@ done:
hssize_t
H5Fget_freespace(hid_t file_id)
{
- H5VL_t *vol_plugin;
- void *obj;
+ H5VL_object_t *obj = NULL;
hssize_t ret_value; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE1("Hs", "i", file_id);
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_optional(obj, vol_plugin->cls, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(obj->vol_obj, obj->vol_info->vol_cls, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_FREE_SPACE, &ret_value) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file free space")
@@ -1056,22 +1020,17 @@ done:
herr_t
H5Fget_filesize(hid_t file_id, hsize_t *size)
{
- H5VL_t *vol_plugin;
- void *file;
+ H5VL_object_t *file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE2("e", "i*h", file_id, size);
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (file = (void *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (file = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a file ID")
- if(H5VL_file_optional(file, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(file->vol_obj, file->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_SIZE, size) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file size")
@@ -1124,23 +1083,18 @@ done:
ssize_t
H5Fget_file_image(hid_t file_id, void *buf_ptr, size_t buf_len)
{
- H5VL_t *vol_plugin;
- void *file;
+ H5VL_object_t *file;
ssize_t ret_value; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE3("Zs", "i*xz", file_id, buf_ptr, buf_len);
/* Check args */
- if(NULL == (file = (void *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (file = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a file ID")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get image through the VOL */
- if(H5VL_file_optional(file, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(file->vol_obj, file->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_FILE_IMAGE, buf_ptr, &ret_value, buf_len) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file image")
@@ -1170,9 +1124,8 @@ done:
herr_t
H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr)
{
- H5VL_t *vol_plugin;
- void *obj;
- herr_t ret_value = SUCCEED; /* Return value */
+ H5VL_object_t *obj = NULL;
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE2("e", "i*x", file_id, config_ptr);
@@ -1181,15 +1134,11 @@ H5Fget_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr)
if((NULL == config_ptr) || (config_ptr->version != H5AC__CURR_CACHE_CONFIG_VERSION))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Bad config_ptr")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_optional(obj, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(obj->vol_obj, obj->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_MDC_CONF, config_ptr) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get mdc configuration")
@@ -1216,21 +1165,17 @@ done:
herr_t
H5Fset_mdc_config(hid_t file_id, H5AC_cache_config_t *config_ptr)
{
- H5VL_t *vol_plugin;
- void *obj;
- herr_t ret_value = SUCCEED; /* Return value */
+ H5VL_object_t *obj = NULL;
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE2("e", "i*x", file_id, config_ptr);
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_optional(obj, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(obj->vol_obj, obj->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_SET_MDC_CONFIG, config_ptr) < 0)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "uanvle to set MDC configuration")
@@ -1258,25 +1203,20 @@ done:
herr_t
H5Fget_mdc_hit_rate(hid_t file_id, double *hit_rate_ptr)
{
- H5VL_t *vol_plugin;
- void *file;
+ H5VL_object_t *file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE2("e", "i*d", file_id, hit_rate_ptr);
/* Check args */
- if(NULL == (file = (void *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (file = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a file ID")
if(NULL == hit_rate_ptr)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "NULL hit rate pointer")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
- if(H5VL_file_optional(file, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(file->vol_obj, file->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_MDC_HR, hit_rate_ptr) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get MDC hit rate")
@@ -1306,8 +1246,7 @@ herr_t
H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr,
size_t *cur_size_ptr, int *cur_num_entries_ptr)
{
- H5VL_t *vol_plugin;
- void *file;
+ H5VL_object_t *file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
@@ -1315,14 +1254,11 @@ H5Fget_mdc_size(hid_t file_id, size_t *max_size_ptr, size_t *min_clean_size_ptr,
cur_size_ptr, cur_num_entries_ptr);
/* Check args */
- if(NULL == (file = (H5F_t *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (file = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "not a file ID")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
- if(H5VL_file_optional(file, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL, H5VL_FILE_GET_MDC_SIZE,
+ if(H5VL_file_optional(file->vol_obj, file->vol_info->vol_cls, H5AC_dxpl_id,
+ H5_REQUEST_NULL, H5VL_FILE_GET_MDC_SIZE,
max_size_ptr, min_clean_size_ptr, cur_size_ptr, cur_num_entries_ptr) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get MDC size")
@@ -1354,22 +1290,17 @@ done:
herr_t
H5Freset_mdc_hit_rate_stats(hid_t file_id)
{
- H5VL_t *vol_plugin;
- void *obj;
- herr_t ret_value = SUCCEED; /* Return value */
+ H5VL_object_t *obj = NULL;
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE1("e", "i", file_id);
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5I_object(file_id)))
+ if(NULL == (obj = (H5VL_object_t *)H5I_object(file_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_optional(obj, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(obj->vol_obj, obj->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_RESET_MDC_HIT_RATE) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "can't reset cache hit rate")
@@ -1403,8 +1334,7 @@ done:
ssize_t
H5Fget_name(hid_t obj_id, char *name/*out*/, size_t size)
{
- H5VL_t *vol_plugin = NULL;
- void *obj = NULL;
+ H5VL_object_t *obj = NULL;
H5I_type_t type;
ssize_t ret_value;
@@ -1417,16 +1347,12 @@ H5Fget_name(hid_t obj_id, char *name/*out*/, size_t size)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
}
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(obj_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5VL_get_object(obj_id)))
+ if(NULL == (obj = H5VL_get_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_get(obj, vol_plugin->cls, H5VL_FILE_GET_NAME, H5AC_dxpl_id, H5_REQUEST_NULL,
- type, size, name, &ret_value) < 0)
+ if(H5VL_file_get(obj->vol_obj, obj->vol_info->vol_cls, H5VL_FILE_GET_NAME,
+ H5AC_dxpl_id, H5_REQUEST_NULL, type, size, name, &ret_value) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file name")
done:
@@ -1454,8 +1380,7 @@ done:
herr_t
H5Fget_info2(hid_t obj_id, H5F_info2_t *finfo)
{
- H5VL_t *vol_plugin;
- void *obj;
+ H5VL_object_t *obj = NULL;
H5I_type_t type;
herr_t ret_value = SUCCEED; /* Return value */
@@ -1472,15 +1397,11 @@ H5Fget_info2(hid_t obj_id, H5F_info2_t *finfo)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file or file object")
}
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(obj_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
/* get the file object */
- if(NULL == (obj = (void *)H5VL_get_object(obj_id)))
+ if(NULL == (obj = H5VL_get_object(obj_id)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- if(H5VL_file_optional(obj, vol_plugin->cls, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(obj->vol_obj, obj->vol_info->vol_cls, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_INFO, type, finfo) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file info")
done:
@@ -1507,24 +1428,19 @@ ssize_t
H5Fget_free_sections(hid_t file_id, H5F_mem_t type, size_t nsects,
H5F_sect_info_t *sect_info/*out*/)
{
- H5VL_t *vol_plugin;
- void *file;
+ H5VL_object_t *file;
ssize_t ret_value; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE4("Zs", "iFmzx", file_id, type, nsects, sect_info);
/* Check args */
- if(NULL == (file = (void *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (file = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
if(sect_info && nsects == 0)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "nsects must be > 0")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
- if(H5VL_file_optional(file, vol_plugin->cls, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(file->vol_obj, file->vol_info->vol_cls, H5AC_ind_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_GET_FREE_SECTIONS, sect_info, &ret_value, type, nsects) < 0)
HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file free sections")
done:
@@ -1549,22 +1465,17 @@ done:
herr_t
H5Fclear_elink_file_cache(hid_t file_id)
{
- H5VL_t *vol_plugin;
- void *file;
+ H5VL_object_t *file;
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_API(FAIL)
H5TRACE1("e", "i", file_id);
/* Check args */
- if(NULL == (file = (void *)H5I_object_verify(file_id, H5I_FILE)))
+ if(NULL == (file = (H5VL_object_t *)H5I_object_verify(file_id, H5I_FILE)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid file identifier")
- /* get the plugin pointer */
- if (NULL == (vol_plugin = (H5VL_t *)H5I_get_aux(file_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "ID does not contain VOL information")
-
- if(H5VL_file_optional(file, vol_plugin->cls, H5AC_dxpl_id, H5_REQUEST_NULL,
+ if(H5VL_file_optional(file->vol_obj, file->vol_info->vol_cls, H5AC_dxpl_id, H5_REQUEST_NULL,
H5VL_FILE_CLEAR_ELINK_CACHE) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTRELEASE, FAIL, "can't release external file cache")