summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2008-10-21 15:31:38 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2008-10-21 15:31:38 (GMT)
commit022fd44954a62efc2fe8dbc3aac0f8852579fcb2 (patch)
tree1160cc2511da13bd5702bcec1556adb2f99ddb2e
parent5c220d722e6127947d547eaffe804c4532c23b35 (diff)
downloadhdf5-022fd44954a62efc2fe8dbc3aac0f8852579fcb2.zip
hdf5-022fd44954a62efc2fe8dbc3aac0f8852579fcb2.tar.gz
hdf5-022fd44954a62efc2fe8dbc3aac0f8852579fcb2.tar.bz2
[svn-r15914] Description:
Add return value to metadata journaling status change callback routines, so we can detect errors in them. Tested on: FreeBSD/32 6.2 (duty) in debug mode FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Mac OS X/32 10.5.2 (amazon) in debug mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
-rw-r--r--src/H5C2journal.c4
-rw-r--r--src/H5C2private.h2
-rw-r--r--src/H5Dint.c8
-rw-r--r--src/H5F.c2
-rw-r--r--test/cache2_journal.c6
5 files changed, 11 insertions, 11 deletions
diff --git a/src/H5C2journal.c b/src/H5C2journal.c
index 0f97e82..b8ec171 100644
--- a/src/H5C2journal.c
+++ b/src/H5C2journal.c
@@ -2023,7 +2023,9 @@ H5C2_call_mdjsc_callbacks(H5C2_t * cache_ptr,
func_ptr = ((cache_ptr->mdjsc_cb_tbl)[i]).fcn_ptr;
data_ptr = ((cache_ptr->mdjsc_cb_tbl)[i]).data_ptr;
- func_ptr(config_ptr, dxpl_id, data_ptr);
+ /* Try the callback */
+ if(func_ptr(config_ptr, dxpl_id, data_ptr) < 0)
+ HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "metadata journaling status change callback failed!");
funcs_called++;
}
diff --git a/src/H5C2private.h b/src/H5C2private.h
index e681054..ce4388b 100644
--- a/src/H5C2private.h
+++ b/src/H5C2private.h
@@ -1340,7 +1340,7 @@ typedef struct H5C2_mdj_config_t
* configuration changes.
*/
-typedef void (*H5C2_mdj_status_change_func_t)(const H5C2_mdj_config_t * config_ptr,
+typedef herr_t (*H5C2_mdj_status_change_func_t)(const H5C2_mdj_config_t * config_ptr,
hid_t dxpl_id,
void * data_ptr);
diff --git a/src/H5Dint.c b/src/H5Dint.c
index d4a0ab0..31c2cb2 100644
--- a/src/H5Dint.c
+++ b/src/H5Dint.c
@@ -514,11 +514,11 @@ done:
*
*-------------------------------------------------------------------------
*/
-static void
+static herr_t
H5D_journal_status_cb(const H5C2_mdj_config_t *mdj_config, hid_t dxpl_id,
void *udata)
{
- H5D_t *dset = (H5D_t *)udata; /* User callback data */
+ H5D_t *dset = (H5D_t *)udata; /* User callback data */
herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_NOAPI_NOINIT(H5D_journal_status_cb)
@@ -538,7 +538,7 @@ H5D_journal_status_cb(const H5C2_mdj_config_t *mdj_config, hid_t dxpl_id,
dset->shared->journaling_enabled = mdj_config->enable_journaling;
done:
- FUNC_LEAVE_NOAPI_VOID
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5D_journal_status_cb() */
@@ -1620,7 +1620,7 @@ H5D_close(H5D_t *dataset)
H5D_chunk_stats(dataset, FALSE);
#endif /* H5D_CHUNK_DEBUG */
- /* Deregister callback for this dataset with cache, when journaling status changes */
+ /* Deregister journaling status change cache callback for this dataset */
if(dataset->mdjsc_idx >= 0)
if(H5AC2_deregister_mdjsc_callback(dataset->oloc.file, dataset->mdjsc_idx) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTRELEASE, FAIL, "can't deregister journal status callback")
diff --git a/src/H5F.c b/src/H5F.c
index 763e911..caf0892 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -1107,8 +1107,6 @@ H5F_dest(H5F_t *f, hid_t dxpl_id)
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5F_dest() */
-
-
/*-------------------------------------------------------------------------
* Function: H5F_open
diff --git a/test/cache2_journal.c b/test/cache2_journal.c
index a7a476b..b5da74c 100644
--- a/test/cache2_journal.c
+++ b/test/cache2_journal.c
@@ -178,7 +178,7 @@ static void check_superblock_extensions(void);
static void check_mdjsc_callbacks(void);
-static void test_mdjsc_callback(H5C2_mdj_config_t * config_ptr,
+static herr_t test_mdjsc_callback(H5C2_mdj_config_t * config_ptr,
hid_t dxpl_id,
void * data_ptr);
@@ -6545,7 +6545,7 @@ static hbool_t callback_test_null_data_ptr = FALSE;
static hbool_t callback_test_cache_is_dirty = FALSE;
static int callback_test_null_data_ptr_count = 0;
-static void
+static herr_t
test_mdjsc_callback(H5C2_mdj_config_t * config_ptr,
hid_t dxpl_id,
void * data_ptr)
@@ -6581,7 +6581,7 @@ test_mdjsc_callback(H5C2_mdj_config_t * config_ptr,
*((int *)data_ptr) += 1;
}
- return;
+ return SUCCEED;
} /* test_mdjsc_callback() */