diff options
author | Neil Fortner <nfortne2@hdfgroup.org> | 2012-05-30 22:01:00 (GMT) |
---|---|---|
committer | Neil Fortner <nfortne2@hdfgroup.org> | 2012-05-30 22:01:00 (GMT) |
commit | 9786c0e5cb563c362c9b6f5b9bd0730b9ddcadf6 (patch) | |
tree | 006f9f714a95e349ae313fd76afdae9a45910c19 /src/H5Aint.c | |
parent | 1f6cb6f84a0fdeec79938624ef874d4147d52d87 (diff) | |
download | hdf5-9786c0e5cb563c362c9b6f5b9bd0730b9ddcadf6.zip hdf5-9786c0e5cb563c362c9b6f5b9bd0730b9ddcadf6.tar.gz hdf5-9786c0e5cb563c362c9b6f5b9bd0730b9ddcadf6.tar.bz2 |
[svn-r22422] Purpose: Add support for SWMR with v2 b-trees
Description:
Adds SWMR support to the v2 b-trees when used as a chunk index. Because each
node keeps track of the total number of records reachable through each of its
children, nodes must be shadowed every time a descendent record is inserted or
removed. This implementation prevents this from happening, however, if the node
has already been shadowed since the last time the v2 b-tree header was flushed.
Also modified SWMR test to include v2 b-trees.
Tested: jam, koala, ostrich (h5committest), durandal
Note: There is a preexisting failure in the ph5diff (-v) test
Diffstat (limited to 'src/H5Aint.c')
-rw-r--r-- | src/H5Aint.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/H5Aint.c b/src/H5Aint.c index 74c5590..14c2c65 100644 --- a/src/H5Aint.c +++ b/src/H5Aint.c @@ -308,7 +308,8 @@ done: */ herr_t H5A_dense_build_table(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, - H5_index_t idx_type, H5_iter_order_t order, H5A_attr_table_t *atable) + H5_index_t idx_type, H5_iter_order_t order, void *parent, + H5A_attr_table_t *atable) { H5B2_t *bt2_name = NULL; /* v2 B-tree handle for name index */ hsize_t nrec; /* # of records in v2 B-tree */ @@ -324,7 +325,7 @@ H5A_dense_build_table(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, HDassert(atable); /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, dxpl_id, ainfo->name_bt2_addr, NULL))) + if(NULL == (bt2_name = H5B2_open(f, dxpl_id, ainfo->name_bt2_addr, NULL, parent))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for name index") /* Retrieve # of records in "name" B-tree */ @@ -355,7 +356,7 @@ H5A_dense_build_table(H5F_t *f, hid_t dxpl_id, const H5O_ainfo_t *ainfo, /* Iterate over the links in the group, building a table of the link messages */ if(H5A_dense_iterate(f, dxpl_id, (hid_t)0, ainfo, H5_INDEX_NAME, - H5_ITER_NATIVE, (hsize_t)0, NULL, &attr_op, &udata) < 0) + H5_ITER_NATIVE, (hsize_t)0, parent, NULL, &attr_op, &udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "error building attribute table") /* Sort attribute table in correct iteration order */ @@ -711,7 +712,8 @@ H5A_get_ainfo(H5F_t *f, hid_t dxpl_id, H5O_t *oh, H5O_ainfo_t *ainfo) /* Check if we are using "dense" attribute storage */ if(H5F_addr_defined(ainfo->fheap_addr)) { /* Open the name index v2 B-tree */ - if(NULL == (bt2_name = H5B2_open(f, dxpl_id, ainfo->name_bt2_addr, NULL))) + /*!FIXME use ohdr proxy -NAF */ + if(NULL == (bt2_name = H5B2_open(f, dxpl_id, ainfo->name_bt2_addr, NULL, oh))) HGOTO_ERROR(H5E_ATTR, H5E_CANTOPENOBJ, FAIL, "unable to open v2 B-tree for name index") /* Retrieve # of records in "name" B-tree */ @@ -1252,7 +1254,7 @@ H5A_dense_post_copy_file_all(const H5O_loc_t *src_oloc, const H5O_ainfo_t *ainfo if(H5A_dense_iterate(src_oloc->file, dxpl_id, (hid_t)0, ainfo_src, H5_INDEX_NAME, - H5_ITER_NATIVE, (hsize_t)0, NULL, &attr_op, &udata) < 0) + H5_ITER_NATIVE, (hsize_t)0, NULL, NULL, &attr_op, &udata) < 0) HGOTO_ERROR(H5E_ATTR, H5E_CANTINIT, FAIL, "error building attribute table") done: |