Merge branch 'develop' of https://bitbucket.hdfgroup.org/scm/hdffv/hdf5 into merge_func_enter_vol

Plus initial steps toward merging API context push into FUNC_ENTER_API* macros
This commit is contained in:
Quincey Koziol
2018-03-18 18:36:49 -05:00
457 changed files with 26233 additions and 18888 deletions

View File

@@ -1753,33 +1753,38 @@ H5O_move_msgs_forward(H5F_t *f, H5O_t *oh)
if(NULL == (cont_targ_chk_proxy = H5O__chunk_protect(f, oh, ((H5O_cont_t *)(curr_msg->native))->chunkno)))
HGOTO_ERROR(H5E_OHDR, H5E_CANTPROTECT, FAIL, "unable to load object header chunk")
/* Remove flush dependency on old continuation
* message chunk */
HDassert(cont_targ_chk_proxy);
HDassert(cont_targ_chk_proxy->fd_parent);
HDassert(curr_chk_proxy);
HDassert((void *)curr_chk_proxy == cont_targ_chk_proxy->fd_parent);
/* Check for flush dependency on previous continuation chunk */
/* (As opposed to chunk 0) */
if(cont_targ_chk_proxy->fd_parent) {
/* Remove flush dependency on old continuation
* message chunk */
HDassert(cont_targ_chk_proxy);
HDassert(curr_chk_proxy);
HDassert((void *)curr_chk_proxy == cont_targ_chk_proxy->fd_parent);
if(H5AC_destroy_flush_dependency(curr_chk_proxy, cont_targ_chk_proxy) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTUNDEPEND, FAIL, "unable to destroy flush dependency")
if(H5AC_destroy_flush_dependency(curr_chk_proxy, cont_targ_chk_proxy) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTUNDEPEND, FAIL, "unable to destroy flush dependency")
cont_targ_chk_proxy->fd_parent = NULL;
cont_targ_chk_proxy->fd_parent = NULL;
} /* end if */
/* Create flush dependency on new continuation
* message chunk */
if(H5AC_create_flush_dependency(null_chk_mdc_obj, cont_targ_chk_proxy) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTDEPEND, FAIL, "unable to create flush dependency")
/* Avoid (another) flush dependency on chunk 0 */
if(0 != null_msg->chunkno) {
/* Sanity checks */
HDassert(null_chk_mdc_obj);
HDassert(((H5C_cache_entry_t *)null_chk_mdc_obj)->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC);
HDassert(((H5C_cache_entry_t *)null_chk_mdc_obj)->type);
HDassert(((H5C_cache_entry_t *)null_chk_mdc_obj)->type->id == H5AC_OHDR_CHK_ID);
HDassert(null_chk_mdc_obj);
HDassert(((H5C_cache_entry_t *)null_chk_mdc_obj)->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC);
HDassert(((H5C_cache_entry_t *)null_chk_mdc_obj)->type);
HDassert((((H5C_cache_entry_t *)null_chk_mdc_obj)->type->id == H5AC_OHDR_ID) ||
(((H5C_cache_entry_t *)null_chk_mdc_obj)->type->id == H5AC_OHDR_CHK_ID));
/* Create flush dependency on new continuation
* message chunk */
if(H5AC_create_flush_dependency(null_chk_mdc_obj, cont_targ_chk_proxy) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTDEPEND, FAIL, "unable to create flush dependency")
cont_targ_chk_proxy->fd_parent = null_chk_mdc_obj;
cont_targ_chk_proxy->fd_parent = null_chk_mdc_obj;
} /* end if */
/* Unprotect continuation message target chunk
*/
/* Unprotect continuation message target chunk */
if(H5O__chunk_unprotect(f, cont_targ_chk_proxy, FALSE) < 0)
HGOTO_ERROR(H5E_OHDR, H5E_CANTUNPROTECT, FAIL, "unable to unprotect object header chunk")
cont_targ_chk_proxy = NULL;