diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2008-10-21 15:31:38 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2008-10-21 15:31:38 (GMT) |
commit | 022fd44954a62efc2fe8dbc3aac0f8852579fcb2 (patch) | |
tree | 1160cc2511da13bd5702bcec1556adb2f99ddb2e | |
parent | 5c220d722e6127947d547eaffe804c4532c23b35 (diff) | |
download | hdf5-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.c | 4 | ||||
-rw-r--r-- | src/H5C2private.h | 2 | ||||
-rw-r--r-- | src/H5Dint.c | 8 | ||||
-rw-r--r-- | src/H5F.c | 2 | ||||
-rw-r--r-- | test/cache2_journal.c | 6 |
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") @@ -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() */ |