diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2007-03-08 20:10:12 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2007-03-08 20:10:12 (GMT) |
commit | 74a30fff3e0fcd8919ced487abd03eefd27d57c1 (patch) | |
tree | 2df0a0d2cfc51cce067f25e503e6dfd26c8e827d /src/H5Adense.c | |
parent | 25bb6f5dd8af42d2facaab26f0cdeb7fc76456ae (diff) | |
download | hdf5-74a30fff3e0fcd8919ced487abd03eefd27d57c1.zip hdf5-74a30fff3e0fcd8919ced487abd03eefd27d57c1.tar.gz hdf5-74a30fff3e0fcd8919ced487abd03eefd27d57c1.tar.bz2 |
[svn-r13477] Description:
The main purpose of this checkin was to eliminate the
space used for tracking creation time indices when there is no way they
can be used (i.e. attributes can't be shared in the file and the user hasn't
turned on attribute creation tracking), however there were some other minor
changes which crept in:
- Fix a cache locking deadlock when a shared attribute and one of its
components end up in the same fractal heap direct block.
(This is fixed the "slow" way for right now, until John has time
to add support for readers/writer locking to the cache.
- Optimize attribute copying when a copy will be kept during a v2 B-tree
search.
- When freeing a block on disk, attempt to merge it with the metadata
and "small data" aggregators.
Tested on:
Mac OS X/32 10.4.8 (amazon)
FreeBSD/32 6.2 (duty)
Diffstat (limited to 'src/H5Adense.c')
-rw-r--r-- | src/H5Adense.c | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/src/H5Adense.c b/src/H5Adense.c index 1dc7ad9..a1f9587 100644 --- a/src/H5Adense.c +++ b/src/H5Adense.c @@ -289,13 +289,11 @@ done: *------------------------------------------------------------------------- */ static herr_t -H5A_dense_fnd_cb(const void *_attr, void *_user_attr) +H5A_dense_fnd_cb(const H5A_t *attr, hbool_t *took_ownership, void *_user_attr) { - const H5A_t *attr = (const H5A_t *)_attr; /* Record from B-tree */ - H5A_t **user_attr = (H5A_t **)_user_attr; /* User data from v2 B-tree attribute lookup */ - herr_t ret_value = SUCCEED; /* Return value */ + H5A_t const **user_attr = (H5A_t const **)_user_attr; /* User data from v2 B-tree attribute lookup */ - FUNC_ENTER_NOAPI_NOINIT(H5A_dense_fnd_cb) + FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5A_dense_fnd_cb) /* * Check arguments. @@ -303,12 +301,11 @@ H5A_dense_fnd_cb(const void *_attr, void *_user_attr) HDassert(attr); HDassert(user_attr); - /* Copy attribute information */ - if(NULL == (*user_attr = H5A_copy(NULL, attr))) - HGOTO_ERROR(H5E_ATTR, H5E_CANTCOPY, H5_ITER_ERROR, "can't copy attribute") + /* Take over attribute ownership */ + *user_attr = attr; + *took_ownership = TRUE; -done: - FUNC_LEAVE_NOAPI(ret_value) + FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5A_dense_fnd_cb() */ |