From 5359456644af3f4fa07821c58cdb3818e2f515de Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Tue, 6 Apr 2010 16:33:10 -0500 Subject: [svn-r18522] Description: Bring metadata journaling branch into closer correspondence with trunk: extract data structure freeing routines from metadata cache client 'destroy' callbacks. Tested on: Mac OS X/32 10.6.3 (amazon) w/debug (h5committest not required on this branch) --- src/H5O.c | 12 ++++++------ src/H5Ocache.c | 11 +++++++---- src/H5Ocopy.c | 2 +- src/H5Opkg.h | 2 +- 4 files changed, 15 insertions(+), 12 deletions(-) diff --git a/src/H5O.c b/src/H5O.c index 47efbeb..01abfa3 100644 --- a/src/H5O.c +++ b/src/H5O.c @@ -1206,7 +1206,7 @@ H5O_create(H5F_t *f, hid_t dxpl_id, size_t size_hint, hid_t ocpl_id, done: if(ret_value < 0 && oh) - if(H5O_dest(oh) < 0) + if(H5O_free(oh) < 0) HDONE_ERROR(H5E_OHDR, H5E_CANTFREE, FAIL, "unable to destroy object header data") FUNC_LEAVE_NOAPI(ret_value) @@ -3208,7 +3208,7 @@ done: /*------------------------------------------------------------------------- - * Function: H5O_dest + * Function: H5O_free * * Purpose: Destroys an object header. * @@ -3221,11 +3221,11 @@ done: *------------------------------------------------------------------------- */ herr_t -H5O_dest(H5O_t *oh) +H5O_free(H5O_t *oh) { unsigned u; /* Local index variable */ - FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_dest) + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_free) /* check args */ HDassert(oh); @@ -3247,8 +3247,8 @@ H5O_dest(H5O_t *oh) } /* end if */ /* destroy object header */ - H5FL_FREE(H5O_t, oh); + oh = H5FL_FREE(H5O_t, oh); FUNC_LEAVE_NOAPI(SUCCEED) -} /* end H5O_dest() */ +} /* end H5O_free() */ diff --git a/src/H5Ocache.c b/src/H5Ocache.c index 158f432..bfd1403 100644 --- a/src/H5Ocache.c +++ b/src/H5Ocache.c @@ -310,7 +310,7 @@ H5O_cache_deserialize(haddr_t addr, size_t len, const void *image, done: /* Release the [possibly partially initialized] object header on errors */ if(!ret_value && oh) - if(H5O_dest(oh) < 0) + if(H5O_free(oh) < 0) HDONE_ERROR(H5E_OHDR, H5E_CANTRELEASE, NULL, "unable to destroy object header data") FUNC_LEAVE_NOAPI(ret_value) @@ -496,17 +496,20 @@ static herr_t H5O_cache_free_icr(haddr_t UNUSED addr, size_t UNUSED len, void *thing) { H5O_t *oh = (H5O_t *)thing; /* Object header to destroy */ + herr_t ret_value = SUCCEED; /* Return value */ - FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5O_cache_free_icr) + FUNC_ENTER_NOAPI_NOINIT(H5O_cache_free_icr) /* Check arguments */ HDassert(oh); HDassert(oh->rc == 0); /* Destroy object header */ - H5O_dest(oh); + if(H5O_free(oh) < 0) + HGOTO_ERROR(H5E_OHDR, H5E_CANTRELEASE, FAIL, "can't destroy object header") - FUNC_LEAVE_NOAPI(SUCCEED) +done: + FUNC_LEAVE_NOAPI(ret_value) } /* H5O_cache_free_icr() */ diff --git a/src/H5Ocopy.c b/src/H5Ocopy.c index 4b24d4e..a95495f 100644 --- a/src/H5Ocopy.c +++ b/src/H5Ocopy.c @@ -733,7 +733,7 @@ done: HDONE_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, FAIL, "unable to release object header") /* Release pointer to destination object header */ - if(ret_value < 0 && oh_dst && H5O_dest(oh_dst) < 0) + if(ret_value < 0 && oh_dst && H5O_free(oh_dst) < 0) HDONE_ERROR(H5E_OHDR, H5E_CANTFREE, FAIL, "unable to destroy object header data") /* Release user data for particular type of object to copy */ diff --git a/src/H5Opkg.h b/src/H5Opkg.h index 0c0a7fe..276601c 100644 --- a/src/H5Opkg.h +++ b/src/H5Opkg.h @@ -516,7 +516,7 @@ H5_DLL herr_t H5O_delete_mesg(H5F_t *f, hid_t dxpl_id, H5O_t *open_oh, H5O_mesg_ H5_DLL const H5O_obj_class_t *H5O_obj_class_real(H5O_t *oh); H5_DLL herr_t H5O_inc_rc(H5O_t *oh); H5_DLL herr_t H5O_dec_rc(H5O_t *oh); -H5_DLL herr_t H5O_dest(H5O_t *oh); +H5_DLL herr_t H5O_free(H5O_t *oh); /* Object header message routines */ H5_DLL unsigned H5O_msg_alloc(H5F_t *f, hid_t dxpl_id, H5O_t *oh, -- cgit v0.12