summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2012-10-15 23:26:20 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2012-10-15 23:26:20 (GMT)
commit0725d04506a4534b368c9ac1289bb7e7d3e2d798 (patch)
tree83f161c7cc6a19875929edafdfb46864ecb4cc74
parentad18b90759cb739c0a12d25b53114fa59cc510de (diff)
downloadhdf5-0725d04506a4534b368c9ac1289bb7e7d3e2d798.zip
hdf5-0725d04506a4534b368c9ac1289bb7e7d3e2d798.tar.gz
hdf5-0725d04506a4534b368c9ac1289bb7e7d3e2d798.tar.bz2
[svn-r22900] Purpose:
Create/destroy flush dependency between the fractal heap header and the 'huge' v2 B-tree. Tested on: jam (still has flush refresh test error)
-rw-r--r--src/H5HFhuge.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/H5HFhuge.c b/src/H5HFhuge.c
index 786c850..1fe1468 100644
--- a/src/H5HFhuge.c
+++ b/src/H5HFhuge.c
@@ -164,6 +164,9 @@ H5HF_huge_bt2_create(H5HF_hdr_t *hdr, hid_t dxpl_id)
if(H5B2_get_addr(hdr->huge_bt2, &hdr->huge_bt2_addr) < 0)
HGOTO_ERROR(H5E_HEAP, H5E_CANTGET, FAIL, "can't get v2 B-tree address for tracking 'huge' heap objects")
+ /* Create a flush dependency between the 'huge' v2 B-tree and the fractal heap */
+ if(hdr->swmr_write && H5B2_depend((H5AC_info_t *)hdr, hdr->huge_bt2) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTDEPEND, FAIL, "can't create flush dependency between fractal heap and 'huge' v2 B-tree")
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF_huge_bt2_create() */
@@ -1034,6 +1037,10 @@ H5HF_huge_term(H5HF_hdr_t *hdr, hid_t dxpl_id)
if(H5F_addr_defined(hdr->huge_bt2_addr) && hdr->huge_nobjs == 0) {
/* Sanity check */
HDassert(hdr->huge_size == 0);
+
+ /* Destroy the flush dependency between the 'huge' v2 B-tree and the fractal heap */
+ if(hdr->swmr_write && H5B2_undepend((H5AC_info_t *)hdr, hdr->huge_bt2) < 0)
+ HGOTO_ERROR(H5E_HEAP, H5E_CANTUNDEPEND, FAIL, "can't destroy flush dependency between fractal heap and 'huge' v2 B-tree")
/* Delete the v2 B-tree */
/* (any v2 B-tree class will work here) */