summaryrefslogtreecommitdiffstats
BranchCommit messageAuthorAge
architecture_docsUpdate README.mdGerd Heber3 years
developFix an issue where the Subfiling VFD's context cache grows too large (#4159)jhendersonHDF18 months
develop-readmeUpdate Linux workflows (#3173)Dana Robinson2 years
feature/1_12_recursive_ts_rw_lockUpdates BRANCH.md fileDana Robinson3 years
feature/alignmentPer discussion, use HD and add comments.David Young3 years
feature/async2Update pr-check.ymlLes Kurz5 years
feature/ccioCorrecting H5FD__mpio_custom_<read,write> syntax to have two _ characters.Rick7 years
feature/coding_standardsMerge branch 'develop' into feature/coding_standardsDana Robinson3 years
feature/de-hdTry to turn off auto-formatting on this branch.David Young3 years
feature/h5detectCommitting clang-format changesgithub-actions3 years
feature/h5f_get_obj_reworkReplace internal API callsMatthew Larson18 months
feature/indexingRemoved redundant textRichard Warren6 years
feature/new_datatypesMerge branch 'develop' into feature/new_datatypesDana Robinson18 months
feature/onion_vfdSync with develop (#1863)Dana Robinson3 years
feature/parallel_h5repackSync branch with develop (#1616)Scot Breitenfeld3 years
feature/refactor-h5t-cmpMerge branch 'feature/refactor-h5t-cmp' of github.com:HDFGroup/hdf5 into feat...David Young4 years
feature/select_io_chunk_cacheCommitting clang-format changesgithub-actions20 months
feature/select_io_tconvMerge pull request #2876 from vchoi-hdfgroup/2my_feature_select_io_tconvNeil Fortner2 years
feature/vfd_swmrVFD SWMR: Warning fixes and minor cleanup (#1847)Dana Robinson3 years
feature/vfd_swmr_beta_2Update VFD SWMR UGDana Robinson3 years
feature/vol_cap_flagsConvert unsigned cap flag field to uint64_t and add flags (#2050)Dana Robinson3 years
feature/vol_tools_testsMove changes from external repo to main repo (#3718)Glenn Song23 months
feature/werror-restrictMerge branch 'develop' into feature/werror-restrictDana Robinson3 years
gh-pagesdeploy: 2908dd1d12f82b3ad559e98ae639fac2c238bcddlrknox18 months
hdf5_1_10Added RELEASE.txt from HDF5 1.10.11 release to HISTORY-1_10.txt. (#3611)Larry Knox24 months
hdf5_1_10_10Update release date. (#2655)Larry Knox2 years
hdf5_1_10_11Create 11011 tarball (#3596)Larry Knox24 months
hdf5_1_10_9Remove duplicate line from README.md.Larry Knox3 years
hdf5_1_12Adjust some CMake settings (#3828)Allen Byrne22 months
hdf5_1_12_2HDF5 1.12.2 release created April 19, 2022.Larry Knox3 years
hdf5_1_12_3Hdf5 1 12 3 release (#3833)Larry Knox22 months
hdf5_1_13_2Update READMERE.md and RELEASE.txt with release date.Larry Knox3 years
hdf5_1_13_3Hdf5 1 13 3 - RELEASE.txt updates (#2203)Larry Knox3 years
hdf5_1_14Fix typo/stray character in cmake-ctest.yml (#4128)Larry Knox18 months
hdf5_1_14_0Commit release date.Larry Knox3 years
hdf5_1_14_1Hdf5 1 14 1-2 release for autoconf 2.71 generated files (#2945)Larry Knox2 years
hdf5_1_14_2Update release - fix bug and update date (#3380)Larry Knox2 years
hdf5_1_14_3Release updates (#3792)Larry Knox23 months
hdf5_1_6Merge pull request #1730 in HDFFV/hdf5 from ~BRTNFLD/hdf5_msb:hdf5_1_6 to hdf...Scot Breitenfeld6 years
hdf5_1_8Correct script for 3.12 and update HPC process (#2435)Allen Byrne3 years
hdf5_1_8_23Update release date in RELEASE.txt (#2440)Larry Knox3 years
inactive/110_HDFFV-10808-h5pset_file_space_strategyMerge pull request #1795 in HDFFV/hdf5 from ~BYRN/hdf5_adb:hdf5_1_10 to hdf5_...Allen Byrne6 years
inactive/H5Ocompare[svn-r22275] Clear up examples vs applications instances and add minimum file.Allen Byrne13 years
inactive/NPOESS[svn-r17496] Fixed obvious error : changed talign.c to talign on TEST_PROG as...Allen Byrne16 years
inactive/aio_vfd[svn-r22505] Comment out create file that fail with the new/PGI compiler unti...Larry Knox13 years
inactive/avoid_truncate[svn-r28002] merge from trunk.Mohamad Chaarawi10 years
inactive/cu_devMerge branch 'develop' into cu_devJohn Ravi5 years
inactive/develop_subfilingAdded skeletal version of H5FDsubfiling.c and H5FDsubfiling.h.mainzer5 years
inactive/develop_subfiling_v1Changed the usleep parameters based on whether the MPI rank hosts an IO Conce...Richard Warren5 years
inactive/direct_io_2[svn-r26017] Added BRANCH.txt.Dana Robinson11 years
inactive/h5ocompare[svn-r19890] Add initial implementation for H5Ocompare and usage in h5diff. ...Neil Fortner15 years
inactive/hdf5_daosmFix uninitialized return value bugs.Neil Fortner8 years
inactive/hdf5_ffadded *ff* files dependencyScot Breitenfeld9 years
inactive/hdf5_ff_compactor[svn-r24100] minor fix while creating a memory datatype for native writesVishwanath Venkatesan12 years
inactive/hdf5_radosMerge pull request #1585 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:hdf5_rados to ...Dana Robinson7 years
inactive/jpeg_converter[svn-r15458] Purpose: Modify the library to take the proper action when files...Neil Fortner17 years
inactive/json_volMerge pull request #1633 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:feature/json_v...Dana Robinson6 years
inactive/json_vol_oldcleanup, commentingFrank Willmore8 years
inactive/mdc_sl_optMinor copy edits to comments -- no code changes.mainzer5 years
inactive/mds[svn-r23487] use the core driver at the server side for the metadata fileMohamad Chaarawi12 years
inactive/merge_metadata_journaling[svn-r24779] Description:Quincey Koziol12 years
inactive/metadata_journaling[svn-r22480] Description:Quincey Koziol13 years
inactive/modify_dtype_filter[svn-r15820] Added a design document describing the design details for the fi...Raymond Lu17 years
inactive/multi_rd_wd_coll_io[svn-r29709] another merge from trunk.Mohamad Chaarawi9 years
inactive/multi_rd_wd_coll_io_mergeMerge pull request #837 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:multi_rd_wd_coll_...Larry Knox8 years
inactive/null_vfd[svn-r22705] Updated the failure behavior of inner driver calls. Expanded the...Jacob Gruber13 years
inactive/parallel_vdsSome fixes from Neil plus changes talked about in our last code reviewRichard Warren7 years
inactive/parallel_vds_developMerge branch 'develop' into parallel_vds_developM. Scot Breitenfeld6 years
inactive/parallel_vds_testingAdd two(2) new parallel VDS tests, the VDS merge code for Neil, and a few edi...Richard Warren8 years
inactive/phdf5_metadata_opt[svn-r29080] merge from trunk.Mohamad Chaarawi10 years
inactive/post_open_fixAdded a BRANCH.md fileDana Robinson3 years
inactive/rados_volMerge pull request #1641 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:feature/rados_...Dana Robinson6 years
inactive/selection_ioMerge pull request #1531 from fortnern/selection_ioNeil Fortner3 years
inactive/selection_io_with_subfiling_vfdspelling corrections (#1382)Scot Breitenfeld4 years
inactive/trunk_merge_coverity[svn-r23698] Description:Quincey Koziol12 years
loricooperhdf-patch-1Updated help desk URLLori Cooper21 months
metadata_cache_macro_cleanupremove obsolete SZIP find module (#2901)Allen Byrne2 years
ossf-scorecardCreate scorecard.ymlDana Robinson2 years
pr_484Committing clang-format changesgithub-actions4 years
reduce-h5f-duplicationInstead of duplicating H5F_shared_block_write() and _read() wholesale inDavid Young6 years
sel_io_chunk_cacheCommitting clang-format changesgithub-actions21 months
shell_scriptRemove unneeded/duplicated filesJordan Henderson23 months
zzz-gitlab-ciRun test without submitting to CDash.Larry Knox5 years
 
TagDownloadAuthorAge
snapshotsnapshot.zip  snapshot.tar.gz  snapshot.tar.bz2  lrknox18 months
snapshot-1.14snapshot-1.14.zip  snapshot-1.14.tar.gz  snapshot-1.14.tar.bz2  byrnHDF19 months
hdf5-1_12_3hdf5-1_12_3.zip  hdf5-1_12_3.tar.gz  hdf5-1_12_3.tar.bz2  Larry Knox22 months
snapshot-1.12snapshot-1.12.zip  snapshot-1.12.tar.gz  snapshot-1.12.tar.bz2  byrnHDF22 months
hdf5-1_14_3hdf5-1_14_3.zip  hdf5-1_14_3.tar.gz  hdf5-1_14_3.tar.bz2  Larry Knox23 months
hdf5-1_14_3-rc1hdf5-1_14_3-rc1.zip  hdf5-1_14_3-rc1.tar.gz  hdf5-1_14_3-rc1.tar.bz2  Larry Knox23 months
snapshot-1.10snapshot-1.10.zip  snapshot-1.10.tar.gz  snapshot-1.10.tar.bz2  byrnHDF24 months
hdf5-1_10_11hdf5-1_10_11.zip  hdf5-1_10_11.tar.gz  hdf5-1_10_11.tar.bz2  Larry Knox24 months
hdf5-1_14_2hdf5-1_14_2.zip  hdf5-1_14_2.tar.gz  hdf5-1_14_2.tar.bz2  Larry Knox2 years
hdf5-1_14_1-2hdf5-1_14_1-2.zip  hdf5-1_14_1-2.tar.gz  hdf5-1_14_1-2.tar.bz2  Larry Knox2 years
1.14.1hdf5-1.14.1.zip  hdf5-1.14.1.tar.gz  hdf5-1.14.1.tar.bz2  Larry Knox2 years
hdf5-1_14_1hdf5-1_14_1.zip  hdf5-1_14_1.tar.gz  hdf5-1_14_1.tar.bz2  Larry Knox2 years
hdf5-1_10_10hdf5-1_10_10.zip  hdf5-1_10_10.tar.gz  hdf5-1_10_10.tar.bz2  Larry Knox2 years
hdf5-1_8_23hdf5-1_8_23.zip  hdf5-1_8_23.tar.gz  hdf5-1_8_23.tar.bz2  Larry Knox3 years
hdf5-1_14_0hdf5-1_14_0.zip  hdf5-1_14_0.tar.gz  hdf5-1_14_0.tar.bz2  Larry Knox3 years
hdf5-1_13_3hdf5-1_13_3.zip  hdf5-1_13_3.tar.gz  hdf5-1_13_3.tar.bz2  Larry Knox3 years
hdf5-1_13_2hdf5-1_13_2.zip  hdf5-1_13_2.tar.gz  hdf5-1_13_2.tar.bz2  Larry Knox3 years
hdf5-1_10_9hdf5-1_10_9.zip  hdf5-1_10_9.tar.gz  hdf5-1_10_9.tar.bz2  Larry Knox3 years
hdf5_1_10_9-basehdf5_1_10_9-base.zip  hdf5_1_10_9-base.tar.gz  hdf5_1_10_9-base.tar.bz2  Allen Byrne3 years
hdf5-1_12_2hdf5-1_12_2.zip  hdf5-1_12_2.tar.gz  hdf5-1_12_2.tar.bz2  Larry Knox3 years
hdf5-1_12_2-3-rc1hdf5-1_12_2-3-rc1.zip  hdf5-1_12_2-3-rc1.tar.gz  hdf5-1_12_2-3-rc1.tar.bz2  Larry Knox3 years
hdf5-1_13_1hdf5-1_13_1.zip  hdf5-1_13_1.tar.gz  hdf5-1_13_1.tar.bz2  Larry Knox4 years
hdf5-1_13_0hdf5-1_13_0.zip  hdf5-1_13_0.tar.gz  hdf5-1_13_0.tar.bz2  Larry Knox4 years
hdf5-1_10_8hdf5-1_10_8.zip  hdf5-1_10_8.tar.gz  hdf5-1_10_8.tar.bz2  Larry Knox4 years
hdf5-1_13_0-rc6hdf5-1_13_0-rc6.zip  hdf5-1_13_0-rc6.tar.gz  hdf5-1_13_0-rc6.tar.bz2  Larry Knox4 years
vfd_swmr_beta_1vfd_swmr_beta_1.zip  vfd_swmr_beta_1.tar.gz  vfd_swmr_beta_1.tar.bz2  Dana Robinson4 years
hdf5-1_12_1hdf5-1_12_1.zip  hdf5-1_12_1.tar.gz  hdf5-1_12_1.tar.bz2  Larry Knox4 years
vfd_swmr_alpha_2vfd_swmr_alpha_2.zip  vfd_swmr_alpha_2.tar.gz  vfd_swmr_alpha_2.tar.bz2  Dana Robinson4 years
hdf5-1_8_22hdf5-1_8_22.zip  hdf5-1_8_22.tar.gz  hdf5-1_8_22.tar.bz2  Larry Knox5 years
hdf5-1_13_0-rc5hdf5-1_13_0-rc5.zip  hdf5-1_13_0-rc5.tar.gz  hdf5-1_13_0-rc5.tar.bz2  Neil Fortner5 years
hdf5-1_13_0-rc4hdf5-1_13_0-rc4.zip  hdf5-1_13_0-rc4.tar.gz  hdf5-1_13_0-rc4.tar.bz2  Dana Robinson5 years
hdf5-1_13_0-rc3hdf5-1_13_0-rc3.zip  hdf5-1_13_0-rc3.tar.gz  hdf5-1_13_0-rc3.tar.bz2  Quincey Koziol5 years
hdf5-1_13_0-rc2hdf5-1_13_0-rc2.zip  hdf5-1_13_0-rc2.tar.gz  hdf5-1_13_0-rc2.tar.bz2  jhendersonHDF5 years
hdf5-1_13_0-rc1hdf5-1_13_0-rc1.zip  hdf5-1_13_0-rc1.tar.gz  hdf5-1_13_0-rc1.tar.bz2  Hans Johnson5 years
hdf5-1.12.1-rc1hdf5-1.12.1-rc1.zip  hdf5-1.12.1-rc1.tar.gz  hdf5-1.12.1-rc1.tar.bz2  Allen Byrne5 years
hdf5-1_10_7hdf5-1_10_7.zip  hdf5-1_10_7.tar.gz  hdf5-1_10_7.tar.bz2  Larry Knox5 years
vfd_swmr_alpha_1vfd_swmr_alpha_1.zip  vfd_swmr_alpha_1.tar.gz  vfd_swmr_alpha_1.tar.bz2  John Mainzer5 years
hdf5-1_12_0hdf5-1_12_0.zip  hdf5-1_12_0.tar.gz  hdf5-1_12_0.tar.bz2  Larry Knox6 years
hdf5-1_12_0-initialhdf5-1_12_0-initial.zip  hdf5-1_12_0-initial.tar.gz  hdf5-1_12_0-initial.tar.bz2  Larry Knox6 years
hdf5-1_10_6hdf5-1_10_6.zip  hdf5-1_10_6.tar.gz  hdf5-1_10_6.tar.bz2  Larry Knox6 years
hdf5-1_12_0-alpha1hdf5-1_12_0-alpha1.zip  hdf5-1_12_0-alpha1.tar.gz  hdf5-1_12_0-alpha1.tar.bz2  Larry Knox6 years
hdf5-1_12_0-alpha0hdf5-1_12_0-alpha0.zip  hdf5-1_12_0-alpha0.tar.gz  hdf5-1_12_0-alpha0.tar.bz2  Larry Knox6 years
hdf5_1_12-initialhdf5_1_12-initial.zip  hdf5_1_12-initial.tar.gz  hdf5_1_12-initial.tar.bz2  Larry Knox6 years
hdf5-1_10_5hdf5-1_10_5.zip  hdf5-1_10_5.tar.gz  hdf5-1_10_5.tar.bz2  Larry Knox7 years
hdf5-1_10_4hdf5-1_10_4.zip  hdf5-1_10_4.tar.gz  hdf5-1_10_4.tar.bz2  Larry Knox7 years
Base_1_10_4Base_1_10_4.zip  Base_1_10_4.tar.gz  Base_1_10_4.tar.bz2  Larry Knox7 years
hdf5-1_10_3hdf5-1_10_3.zip  hdf5-1_10_3.tar.gz  hdf5-1_10_3.tar.bz2  Larry Knox7 years
hdf5-1_8_21hdf5-1_8_21.zip  hdf5-1_8_21.tar.gz  hdf5-1_8_21.tar.bz2  Larry Knox7 years
hdf5-1_10_2hdf5-1_10_2.zip  hdf5-1_10_2.tar.gz  hdf5-1_10_2.tar.bz2  Larry Knox7 years
hdf5-1_8_20hdf5-1_8_20.zip  hdf5-1_8_20.tar.gz  hdf5-1_8_20.tar.bz2  Larry Knox8 years
hdf5-1_8_19hdf5-1_8_19.zip  hdf5-1_8_19.tar.gz  hdf5-1_8_19.tar.bz2  Larry Knox8 years
hdf5-1_10_1hdf5-1_10_1.zip  hdf5-1_10_1.tar.gz  hdf5-1_10_1.tar.bz2  Larry Knox8 years
hdf5-1_8_18hdf5-1_8_18.zip  hdf5-1_8_18.tar.gz  hdf5-1_8_18.tar.bz2  lrknox9 years
hdf5-1_10_0-patch1hdf5-1_10_0-patch1.zip  hdf5-1_10_0-patch1.tar.gz  hdf5-1_10_0-patch1.tar.bz2  Larry Knox9 years
hdf5-1_8_17hdf5-1_8_17.zip  hdf5-1_8_17.tar.gz  hdf5-1_8_17.tar.bz2  Larry Knox9 years
hdf5-1_10_0hdf5-1_10_0.zip  hdf5-1_10_0.tar.gz  hdf5-1_10_0.tar.bz2  Larry Knox9 years
hdf5-1_10_0-alpha1hdf5-1_10_0-alpha1.zip  hdf5-1_10_0-alpha1.tar.gz  hdf5-1_10_0-alpha1.tar.bz2  Elena Pourmal10 years
hdf5-1_10_0-alpha0hdf5-1_10_0-alpha0.zip  hdf5-1_10_0-alpha0.tar.gz  hdf5-1_10_0-alpha0.tar.bz2  Elena Pourmal10 years
hdf5-1_8_16hdf5-1_8_16.zip  hdf5-1_8_16.tar.gz  hdf5-1_8_16.tar.bz2  Larry Knox10 years
hdf5_ff_v1hdf5_ff_v1.zip  hdf5_ff_v1.tar.gz  hdf5_ff_v1.tar.bz2  Mohamad Chaarawi10 years
hdf5-1_9_222-swmr0hdf5-1_9_222-swmr0.zip  hdf5-1_9_222-swmr0.tar.gz  hdf5-1_9_222-swmr0.tar.bz2  Albert Cheng10 years
hdf5-1_8_15-patch1hdf5-1_8_15-patch1.zip  hdf5-1_8_15-patch1.tar.gz  hdf5-1_8_15-patch1.tar.bz2  Elena Pourmal10 years
CCP_proto1CCP_proto1.zip  CCP_proto1.tar.gz  CCP_proto1.tar.bz2  Albert Cheng10 years
hdf5-1_8_15hdf5-1_8_15.zip  hdf5-1_8_15.tar.gz  hdf5-1_8_15.tar.bz2  Elena Pourmal10 years
hdf5_1_8_15_precodefreeze_final_commithdf5_1_8_15_precodefreeze_final_commit.zip  hdf5_1_8_15_precodefreeze_final_commit.tar.gz  hdf5_1_8_15_precodefreeze_final_commit.tar.bz2  Larry Knox10 years
vms_last_support_1_8vms_last_support_1_8.zip  vms_last_support_1_8.tar.gz  vms_last_support_1_8.tar.bz2  Dana Robinson11 years
vms_last_support_trunkvms_last_support_trunk.zip  vms_last_support_trunk.tar.gz  vms_last_support_trunk.tar.bz2  Dana Robinson11 years
hdf5-1_8_14hdf5-1_8_14.zip  hdf5-1_8_14.tar.gz  hdf5-1_8_14.tar.bz2  Elena Pourmal11 years
hdf5-1_8_13hdf5-1_8_13.zip  hdf5-1_8_13.tar.gz  hdf5-1_8_13.tar.bz2  Elena Pourmal11 years
DLS_20140316DLS_20140316.zip  DLS_20140316.tar.gz  DLS_20140316.tar.bz2  Elena Pourmal11 years
before_removing_mpiposix_vfdbefore_removing_mpiposix_vfd.zip  before_removing_mpiposix_vfd.tar.gz  before_removing_mpiposix_vfd.tar.bz2  Quincey Koziol11 years
DECTRIS_20131231DECTRIS_20131231.zip  DECTRIS_20131231.tar.gz  DECTRIS_20131231.tar.bz2  Elena Pourmal12 years
DLS_20131204DLS_20131204.zip  DLS_20131204.tar.gz  DLS_20131204.tar.bz2  Elena Pourmal12 years
hdf5-1_8_12-cmake_install_fixhdf5-1_8_12-cmake_install_fix.zip  hdf5-1_8_12-cmake_install_fix.tar.gz  hdf5-1_8_12-cmake_install_fix.tar.bz2  Elena Pourmal12 years
hdf5-1_8_12hdf5-1_8_12.zip  hdf5-1_8_12.tar.gz  hdf5-1_8_12.tar.bz2  Elena Pourmal12 years
DLS_20130630DLS_20130630.zip  DLS_20130630.tar.gz  DLS_20130630.tar.bz2  Albert Cheng12 years
hdf5-1_8_11hdf5-1_8_11.zip  hdf5-1_8_11.tar.gz  hdf5-1_8_11.tar.bz2  Albert Cheng12 years
hdf5-1_8_10-patch1hdf5-1_8_10-patch1.zip  hdf5-1_8_10-patch1.tar.gz  hdf5-1_8_10-patch1.tar.bz2  Albert Cheng13 years
hdf5-1_8_10hdf5-1_8_10.zip  hdf5-1_8_10.tar.gz  hdf5-1_8_10.tar.bz2  Albert Cheng13 years
hdf5-1_8_9hdf5-1_8_9.zip  hdf5-1_8_9.tar.gz  hdf5-1_8_9.tar.bz2  Mike McGreevy13 years
hdf5-1_8_8hdf5-1_8_8.zip  hdf5-1_8_8.tar.gz  hdf5-1_8_8.tar.bz2  Mike McGreevy14 years
hdf5-1_8_7hdf5-1_8_7.zip  hdf5-1_8_7.tar.gz  hdf5-1_8_7.tar.bz2  Mike McGreevy14 years
hdf5-1_8_6hdf5-1_8_6.zip  hdf5-1_8_6.tar.gz  hdf5-1_8_6.tar.bz2  Mike McGreevy15 years
hdf5-1_8_5-patch1hdf5-1_8_5-patch1.zip  hdf5-1_8_5-patch1.tar.gz  hdf5-1_8_5-patch1.tar.bz2  Mike McGreevy15 years
hdf5-1_8_5hdf5-1_8_5.zip  hdf5-1_8_5.tar.gz  hdf5-1_8_5.tar.bz2  Mike McGreevy15 years
hdf5-1_8_4-patch1hdf5-1_8_4-patch1.zip  hdf5-1_8_4-patch1.tar.gz  hdf5-1_8_4-patch1.tar.bz2  Mike McGreevy16 years
hdf5-1_8_4-VMShdf5-1_8_4-VMS.zip  hdf5-1_8_4-VMS.tar.gz  hdf5-1_8_4-VMS.tar.bz2  Elena Pourmal16 years
hdf5-1_8_4hdf5-1_8_4.zip  hdf5-1_8_4.tar.gz  hdf5-1_8_4.tar.bz2  Elena Pourmal16 years
hdf5-1_6_10hdf5-1_6_10.zip  hdf5-1_6_10.tar.gz  hdf5-1_6_10.tar.bz2  Elena Pourmal16 years
hdf5-1_8_3-patchedhdf5-1_8_3-patched.zip  hdf5-1_8_3-patched.tar.gz  hdf5-1_8_3-patched.tar.bz2  Elena Pourmal16 years
hdf5-1_6_9hdf5-1_6_9.zip  hdf5-1_6_9.tar.gz  hdf5-1_6_9.tar.bz2  Elena Pourmal16 years
hdf5-1_8_3hdf5-1_8_3.zip  hdf5-1_8_3.tar.gz  hdf5-1_8_3.tar.bz2  Elena Pourmal16 years
hdf5-1_8_2hdf5-1_8_2.zip  hdf5-1_8_2.tar.gz  hdf5-1_8_2.tar.bz2  Elena Pourmal17 years
hdf5-1_6_8hdf5-1_6_8.zip  hdf5-1_6_8.tar.gz  hdf5-1_6_8.tar.bz2  Elena Pourmal17 years
hdf5-1_8_1hdf5-1_8_1.zip  hdf5-1_8_1.tar.gz  hdf5-1_8_1.tar.bz2  Elena Pourmal17 years
hdf5-1_0_0-alpha1hdf5-1_0_0-alpha1.zip  hdf5-1_0_0-alpha1.tar.gz  hdf5-1_0_0-alpha1.tar.bz2  Quincey Koziol18 years
hdf5-1_0_0-alpha2hdf5-1_0_0-alpha2.zip  hdf5-1_0_0-alpha2.tar.gz  hdf5-1_0_0-alpha2.tar.bz2  Quincey Koziol18 years
hdf5-1_4_5hdf5-1_4_5.zip  hdf5-1_4_5.tar.gz  hdf5-1_4_5.tar.bz2  Quincey Koziol18 years
hdf5-1_4_4hdf5-1_4_4.zip  hdf5-1_4_4.tar.gz  hdf5-1_4_4.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-beta5hdf5-1_8_0-beta5.zip  hdf5-1_8_0-beta5.tar.gz  hdf5-1_8_0-beta5.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-beta4hdf5-1_8_0-beta4.zip  hdf5-1_8_0-beta4.tar.gz  hdf5-1_8_0-beta4.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-beta3hdf5-1_8_0-beta3.zip  hdf5-1_8_0-beta3.tar.gz  hdf5-1_8_0-beta3.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-beta2hdf5-1_8_0-beta2.zip  hdf5-1_8_0-beta2.tar.gz  hdf5-1_8_0-beta2.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-beta1hdf5-1_8_0-beta1.zip  hdf5-1_8_0-beta1.tar.gz  hdf5-1_8_0-beta1.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-alpha4hdf5-1_8_0-alpha4.zip  hdf5-1_8_0-alpha4.tar.gz  hdf5-1_8_0-alpha4.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-alpha3hdf5-1_8_0-alpha3.zip  hdf5-1_8_0-alpha3.tar.gz  hdf5-1_8_0-alpha3.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-alpha2hdf5-1_8_0-alpha2.zip  hdf5-1_8_0-alpha2.tar.gz  hdf5-1_8_0-alpha2.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-alpha1hdf5-1_8_0-alpha1.zip  hdf5-1_8_0-alpha1.tar.gz  hdf5-1_8_0-alpha1.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0-alpha0hdf5-1_8_0-alpha0.zip  hdf5-1_8_0-alpha0.tar.gz  hdf5-1_8_0-alpha0.tar.bz2  Quincey Koziol18 years
hdf5-1_8_0hdf5-1_8_0.zip  hdf5-1_8_0.tar.gz  hdf5-1_8_0.tar.bz2  Elena Pourmal18 years
hdf5-1_9-starthdf5-1_9-start.zip  hdf5-1_9-start.tar.gz  hdf5-1_9-start.tar.bz2  Elena Pourmal18 years
hdf5-1_6_7hdf5-1_6_7.zip  hdf5-1_6_7.tar.gz  hdf5-1_6_7.tar.bz2  Elena Pourmal18 years
hdf5-1_6_6hdf5-1_6_6.zip  hdf5-1_6_6.tar.gz  hdf5-1_6_6.tar.bz2  Elena Pourmal18 years
before_removing_fphdf5before_removing_fphdf5.zip  before_removing_fphdf5.tar.gz  before_removing_fphdf5.tar.bz2  cvs2svn19 years
hdf5-1_6_5hdf5-1_6_5.zip  hdf5-1_6_5.tar.gz  hdf5-1_6_5.tar.bz2  cvs2svn20 years
before_removing_docsbefore_removing_docs.zip  before_removing_docs.tar.gz  before_removing_docs.tar.bz2  cvs2svn20 years
hdf5-1_6_4hdf5-1_6_4.zip  hdf5-1_6_4.tar.gz  hdf5-1_6_4.tar.bz2  cvs2svn21 years
before_removing_tbbt_codebefore_removing_tbbt_code.zip  before_removing_tbbt_code.tar.gz  before_removing_tbbt_code.tar.bz2  cvs2svn21 years
before_signed_unsigned_changesbefore_signed_unsigned_changes.zip  before_signed_unsigned_changes.tar.gz  before_signed_unsigned_changes.tar.bz2  cvs2svn21 years
hdf5-1_6_3hdf5-1_6_3.zip  hdf5-1_6_3.tar.gz  hdf5-1_6_3.tar.bz2  cvs2svn21 years
hdf5-1_6_2hdf5-1_6_2.zip  hdf5-1_6_2.tar.gz  hdf5-1_6_2.tar.bz2  cvs2svn22 years
hdf5-1_6_1hdf5-1_6_1.zip  hdf5-1_6_1.tar.gz  hdf5-1_6_1.tar.bz2  cvs2svn22 years
hdf5-1_6_0hdf5-1_6_0.zip  hdf5-1_6_0.tar.gz  hdf5-1_6_0.tar.bz2  cvs2svn22 years
hdf5-1_4_3hdf5-1_4_3.zip  hdf5-1_4_3.tar.gz  hdf5-1_4_3.tar.bz2  cvs2svn24 years
hdf5-1_4_2hdf5-1_4_2.zip  hdf5-1_4_2.tar.gz  hdf5-1_4_2.tar.bz2  cvs2svn24 years
hdf5-1_4_1hdf5-1_4_1.zip  hdf5-1_4_1.tar.gz  hdf5-1_4_1.tar.bz2  cvs2svn24 years
hdf5-1_4_0hdf5-1_4_0.zip  hdf5-1_4_0.tar.gz  hdf5-1_4_0.tar.bz2  cvs2svn25 years
hdf5-1_2_2hdf5-1_2_2.zip  hdf5-1_2_2.tar.gz  hdf5-1_2_2.tar.bz2  cvs2svn25 years
hdf5-1_2_1hdf5-1_2_1.zip  hdf5-1_2_1.tar.gz  hdf5-1_2_1.tar.bz2  cvs2svn26 years
hdf5-1_2_0hdf5-1_2_0.zip  hdf5-1_2_0.tar.gz  hdf5-1_2_0.tar.bz2  cvs2svn26 years
hdf5-1_3_1hdf5-1_3_1.zip  hdf5-1_3_1.tar.gz  hdf5-1_3_1.tar.bz2  cvs2svn26 years
hdf5-1_3_0hdf5-1_3_0.zip  hdf5-1_3_0.tar.gz  hdf5-1_3_0.tar.bz2  cvs2svn26 years
hdf5-1_2_0-beta1-update2hdf5-1_2_0-beta1-update2.zip  hdf5-1_2_0-beta1-update2.tar.gz  hdf5-1_2_0-beta1-update2.tar.bz2  cvs2svn26 years
hdf5-1_2_0betahdf5-1_2_0beta.zip  hdf5-1_2_0beta.tar.gz  hdf5-1_2_0beta.tar.bz2  cvs2svn26 years
hdf5-1_0_1hdf5-1_0_1.zip  hdf5-1_0_1.tar.gz  hdf5-1_0_1.tar.bz2  cvs2svn27 years
hdf5-1_0_0hdf5-1_0_0.zip  hdf5-1_0_0.tar.gz  hdf5-1_0_0.tar.bz2  cvs2svn27 years
r1_1beta1r1_1beta1.zip  r1_1beta1.tar.gz  r1_1beta1.tar.bz2  cvs2svn27 years
proto1proto1.zip  proto1.tar.gz  proto1.tar.bz2  cvs2svn28 years
hl opt">, record->chunk_addr); /* (Don't encode the chunk size & filter mask for non-filtered B-tree records) */ for(u = 0; u < ctx->ndims; u++) UINT64ENCODE(raw, record->scaled[u]); FUNC_LEAVE_NOAPI(SUCCEED) } /* H5D__bt2_unfilt_encode() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_unfilt_decode * * Purpose: Decode raw disk form of record into native form * (non-filtered) * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_unfilt_decode(const uint8_t *raw, void *_record, void *_ctx) { H5D_bt2_ctx_t *ctx = (H5D_bt2_ctx_t *)_ctx; /* Callback context structure */ H5D_chunk_rec_t *record = (H5D_chunk_rec_t *)_record; /* The native record */ unsigned u; /* Local index variable */ FUNC_ENTER_STATIC_NOERR /* Sanity check */ HDassert(ctx); /* Decode the record's fields */ H5F_addr_decode_len(ctx->sizeof_addr, &raw, &record->chunk_addr); record->nbytes = ctx->chunk_size; record->filter_mask = 0; for(u = 0; u < ctx->ndims; u++) UINT64DECODE(raw, record->scaled[u]); FUNC_LEAVE_NOAPI(SUCCEED) } /* H5D__bt2_unfilt_decode() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_unfilt_debug * * Purpose: Debug native form of record (non-filtered) * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_unfilt_debug(FILE *stream, int indent, int fwidth, const void *_record, const void *_ctx) { const H5D_chunk_rec_t *record = (const H5D_chunk_rec_t *)_record; /* The native record */ const H5D_bt2_ctx_t *ctx = (const H5D_bt2_ctx_t *)_ctx; /* Callback context */ unsigned u; /* Local index variable */ FUNC_ENTER_STATIC_NOERR /* Sanity checks */ HDassert(record); HDassert(ctx->chunk_size == record->nbytes); HDassert(0 == record->filter_mask); HDfprintf(stream, "%*s%-*s %" PRIuHADDR "\n", indent, "", fwidth, "Chunk address:", record->chunk_addr); HDfprintf(stream, "%*s%-*s {", indent, "", fwidth, "Logical offset:"); for(u = 0; u < ctx->ndims; u++) HDfprintf(stream, "%s%" PRIuHSIZE, u?", ":"", record->scaled[u] * ctx->dim[u]); HDfputs("}\n", stream); FUNC_LEAVE_NOAPI(SUCCEED) } /* H5D__bt2_unfilt_debug() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_filt_encode * * Purpose: Encode native information into raw form for storing on disk * (filtered) * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_filt_encode(uint8_t *raw, const void *_record, void *_ctx) { H5D_bt2_ctx_t *ctx = (H5D_bt2_ctx_t *)_ctx; /* Callback context structure */ const H5D_chunk_rec_t *record = (const H5D_chunk_rec_t *)_record; /* The native record */ unsigned u; /* Local index variable */ FUNC_ENTER_STATIC_NOERR /* Sanity check */ HDassert(ctx); HDassert(record); HDassert(H5F_addr_defined(record->chunk_addr)); HDassert(0 != record->nbytes); /* Encode the record's fields */ H5F_addr_encode_len(ctx->sizeof_addr, &raw, record->chunk_addr); UINT64ENCODE_VAR(raw, record->nbytes, ctx->chunk_size_len); UINT32ENCODE(raw, record->filter_mask); for(u = 0; u < ctx->ndims; u++) UINT64ENCODE(raw, record->scaled[u]); FUNC_LEAVE_NOAPI(SUCCEED) } /* H5D__bt2_filt_encode() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_filt_decode * * Purpose: Decode raw disk form of record into native form * (filtered) * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_filt_decode(const uint8_t *raw, void *_record, void *_ctx) { H5D_bt2_ctx_t *ctx = (H5D_bt2_ctx_t *)_ctx; /* Callback context structure */ H5D_chunk_rec_t *record = (H5D_chunk_rec_t *)_record; /* The native record */ unsigned u; /* Local index variable */ FUNC_ENTER_STATIC_NOERR /* Sanity check */ HDassert(ctx); HDassert(record); /* Decode the record's fields */ H5F_addr_decode_len(ctx->sizeof_addr, &raw, &record->chunk_addr); UINT64DECODE_VAR(raw, record->nbytes, ctx->chunk_size_len); UINT32DECODE(raw, record->filter_mask); for(u = 0; u < ctx->ndims; u++) UINT64DECODE(raw, record->scaled[u]); /* Sanity checks */ HDassert(H5F_addr_defined(record->chunk_addr)); HDassert(0 != record->nbytes); FUNC_LEAVE_NOAPI(SUCCEED) } /* H5D__bt2_filt_decode() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_filt_debug * * Purpose: Debug native form of record (filtered) * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_filt_debug(FILE *stream, int indent, int fwidth, const void *_record, const void *_ctx) { const H5D_chunk_rec_t *record = (const H5D_chunk_rec_t *)_record; /* The native record */ const H5D_bt2_ctx_t *ctx = (const H5D_bt2_ctx_t *)_ctx; /* Callback context */ unsigned u; /* Local index variable */ FUNC_ENTER_STATIC_NOERR /* Sanity checks */ HDassert(record); HDassert(H5F_addr_defined(record->chunk_addr)); HDassert(0 != record->nbytes); HDfprintf(stream, "%*s%-*s %" PRIuHADDR "\n", indent, "", fwidth, "Chunk address:", record->chunk_addr); HDfprintf(stream, "%*s%-*s %u bytes\n", indent, "", fwidth, "Chunk size:", (unsigned)record->nbytes); HDfprintf(stream, "%*s%-*s 0x%08x\n", indent, "", fwidth, "Filter mask:", record->filter_mask); HDfprintf(stream, "%*s%-*s {", indent, "", fwidth, "Logical offset:"); for(u = 0; u < ctx->ndims; u++) HDfprintf(stream, "%s%" PRIuHSIZE, u?", ":"", record->scaled[u] * ctx->dim[u]); HDfputs("}\n", stream); FUNC_LEAVE_NOAPI(SUCCEED) } /* H5D__bt2_filt_debug() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_init * * Purpose: Initialize the indexing information for a dataset. * * Return: Non-negative on success/Negative on failure * * Programmer: Neil Fortner * Wednesday, May 23, 2012 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_init(const H5D_chk_idx_info_t H5_ATTR_UNUSED *idx_info, const H5S_t H5_ATTR_UNUSED *space, haddr_t dset_ohdr_addr) { FUNC_ENTER_STATIC_NOERR /* Check args */ HDassert(H5F_addr_defined(dset_ohdr_addr)); idx_info->storage->u.btree2.dset_ohdr_addr = dset_ohdr_addr; FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5D__bt2_idx_init() */ /*------------------------------------------------------------------------- * Function: H5D__btree2_idx_depend * * Purpose: Create flush dependency between v2 B-tree and dataset's * object header. * * Return: Success: non-negative * Failure: negative * * Programmer: Quincey Koziol * Friday, December 18, 2015 * *------------------------------------------------------------------------- */ static herr_t H5D__btree2_idx_depend(const H5D_chk_idx_info_t *idx_info) { H5O_t *oh = NULL; /* Object header */ H5O_loc_t oloc; /* Temporary object header location for dataset */ H5AC_proxy_entry_t *oh_proxy; /* Dataset's object header proxy */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check args */ HDassert(idx_info); HDassert(idx_info->f); HDassert(H5F_INTENT(idx_info->f) & H5F_ACC_SWMR_WRITE); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(H5D_CHUNK_IDX_BT2 == idx_info->layout->idx_type); HDassert(idx_info->storage); HDassert(H5D_CHUNK_IDX_BT2 == idx_info->storage->idx_type); HDassert(H5F_addr_defined(idx_info->storage->idx_addr)); HDassert(idx_info->storage->u.btree2.bt2); /* Set up object header location for dataset */ H5O_loc_reset(&oloc); oloc.file = idx_info->f; oloc.addr = idx_info->storage->u.btree.dset_ohdr_addr; /* Get header */ if(NULL == (oh = H5O_protect(&oloc, H5AC__READ_ONLY_FLAG, TRUE))) HGOTO_ERROR(H5E_DATASET, H5E_CANTPROTECT, FAIL, "unable to protect object header") /* Retrieve the dataset's object header proxy */ if(NULL == (oh_proxy = H5O_get_proxy(oh))) HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to get dataset object header proxy") /* Make the v2 B-tree a child flush dependency of the dataset's object header proxy */ if(H5B2_depend(idx_info->storage->u.btree2.bt2, oh_proxy) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTDEPEND, FAIL, "unable to create flush dependency on object header proxy") done: /* Release the object header from the cache */ if(oh && H5O_unprotect(&oloc, oh, H5AC__NO_FLAGS_SET) < 0) HDONE_ERROR(H5E_DATASET, H5E_CANTUNPROTECT, FAIL, "unable to release object header") FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__btree2_idx_depend() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_open() * * Purpose: Opens an existing v2 B-tree. * * Note: This information is passively initialized from each index * operation callback because those abstract chunk index operations * are designed to work with the v2 B-tree chunk indices also, * which don't require an 'open' for the data structure. * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_open(const H5D_chk_idx_info_t *idx_info) { H5D_bt2_ctx_ud_t u_ctx; /* user data for creating context */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check args */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(H5D_CHUNK_IDX_BT2 == idx_info->layout->idx_type); HDassert(idx_info->storage); HDassert(H5F_addr_defined(idx_info->storage->idx_addr)); HDassert(NULL == idx_info->storage->u.btree2.bt2); /* Set up the user data */ u_ctx.f = idx_info->f; u_ctx.ndims = idx_info->layout->ndims - 1; u_ctx.chunk_size = idx_info->layout->size; u_ctx.dim = idx_info->layout->dim; /* Open v2 B-tree for the chunk index */ if(NULL == (idx_info->storage->u.btree2.bt2 = H5B2_open(idx_info->f, idx_info->storage->idx_addr, &u_ctx))) HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "can't open v2 B-tree for tracking chunked dataset") /* Check for SWMR writes to the file */ if(H5F_INTENT(idx_info->f) & H5F_ACC_SWMR_WRITE) if(H5D__btree2_idx_depend(idx_info) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTDEPEND, FAIL, "unable to create flush dependency on object header") done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_open() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_create * * Purpose: Create the v2 B-tree for tracking dataset chunks * * Return: SUCCEED/FAIL * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_create(const H5D_chk_idx_info_t *idx_info) { H5B2_create_t bt2_cparam; /* v2 B-tree creation parameters */ H5D_bt2_ctx_ud_t u_ctx; /* data for context call */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check args */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(idx_info->storage); HDassert(!H5F_addr_defined(idx_info->storage->idx_addr)); bt2_cparam.rrec_size = H5F_SIZEOF_ADDR(idx_info->f) /* Address of chunk */ + (idx_info->layout->ndims - 1) * 8; /* # of dimensions x 64-bit chunk offsets */ /* General parameters */ if(idx_info->pline->nused > 0) { unsigned chunk_size_len; /* Size of encoded chunk size */ /* * Compute the size required for encoding the size of a chunk, * allowing for an extra byte, in case the filter makes the chunk larger. */ chunk_size_len = 1 + ((H5VM_log2_gen((uint64_t)idx_info->layout->size) + 8) / 8); if(chunk_size_len > 8) chunk_size_len = 8; bt2_cparam.rrec_size += chunk_size_len + 4; /* Size of encoded chunk size & filter mask */ bt2_cparam.cls = H5D_BT2_FILT; } /* end if */ else bt2_cparam.cls = H5D_BT2; bt2_cparam.node_size = idx_info->layout->u.btree2.cparam.node_size; bt2_cparam.split_percent = idx_info->layout->u.btree2.cparam.split_percent; bt2_cparam.merge_percent = idx_info->layout->u.btree2.cparam.merge_percent; u_ctx.f = idx_info->f; u_ctx.ndims = idx_info->layout->ndims - 1; u_ctx.chunk_size = idx_info->layout->size; u_ctx.dim = idx_info->layout->dim; /* Create the v2 B-tree for the chunked dataset */ if(NULL == (idx_info->storage->u.btree2.bt2 = H5B2_create(idx_info->f, &bt2_cparam, &u_ctx))) HGOTO_ERROR(H5E_DATASET, H5E_CANTCREATE, FAIL, "can't create v2 B-tree for tracking chunked dataset") /* Retrieve the v2 B-tree's address in the file */ if(H5B2_get_addr(idx_info->storage->u.btree2.bt2, &(idx_info->storage->idx_addr)) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "can't get v2 B-tree address for tracking chunked dataset") /* Check for SWMR writes to the file */ if(H5F_INTENT(idx_info->f) & H5F_ACC_SWMR_WRITE) if(H5D__btree2_idx_depend(idx_info) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTDEPEND, FAIL, "unable to create flush dependency on object header") done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_create() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_is_space_alloc * * Purpose: Query if space is allocated for index method * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static hbool_t H5D__bt2_idx_is_space_alloc(const H5O_storage_chunk_t *storage) { FUNC_ENTER_STATIC_NOERR /* Check args */ HDassert(storage); FUNC_LEAVE_NOAPI((hbool_t)H5F_addr_defined(storage->idx_addr)) } /* end H5D__bt2_idx_is_space_alloc() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_mod_cb * * Purpose: Modify record for dataset chunk when it is found in a v2 B-tree. * This is the callback for H5B2_modify() which is called in * H5D__bt2_idx_insert(). * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_mod_cb(void *_record, void *_op_data, hbool_t *changed) { H5D_bt2_ud_t *op_data = (H5D_bt2_ud_t *)_op_data; /* User data for v2 B-tree calls */ H5D_chunk_rec_t *record = (H5D_chunk_rec_t *)_record; /* Chunk record */ FUNC_ENTER_STATIC_NOERR /* Sanity check */ #ifndef NDEBUG { unsigned u; /* Local index variable */ for(u = 0; u < op_data->ndims; u++) HDassert(record->scaled[u] == op_data->rec.scaled[u]); } #endif /* NDEBUG */ /* Modify record */ *record = op_data->rec; /* Note that the record changed */ *changed = TRUE; FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5D__bt2_mod_cb() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_insert * * Purpose: Insert chunk address into the indexing structure. * A non-filtered chunk: * Should not exist * Allocate the chunk and pass chunk address back up * A filtered chunk: * If it was not found, create the chunk and pass chunk address back up * If it was found but its size changed, reallocate the chunk and pass chunk address back up * If it was found but its size was the same, pass chunk address back up * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_insert(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata, const H5D_t H5_ATTR_UNUSED *dset) { H5B2_t *bt2; /* v2 B-tree handle for indexing chunks */ H5D_bt2_ud_t bt2_udata; /* User data for v2 B-tree calls */ unsigned u; /* Local index variable */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Sanity checks */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(idx_info->storage); HDassert(H5F_addr_defined(idx_info->storage->idx_addr)); HDassert(udata); HDassert(H5F_addr_defined(udata->chunk_block.offset)); /* Check if the v2 B-tree is open yet */ if(NULL == idx_info->storage->u.btree2.bt2) { /* Open existing v2 B-tree */ if(H5D__bt2_idx_open(idx_info) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't open v2 B-tree") } /* end if */ else /* Patch the top level file pointer contained in bt2 if needed */ if(H5B2_patch_file(idx_info->storage->u.btree2.bt2, idx_info->f) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't patch v2 B-tree file pointer") /* Set convenience pointer to v2 B-tree structure */ bt2 = idx_info->storage->u.btree2.bt2; /* Set up callback info */ bt2_udata.ndims = idx_info->layout->ndims - 1; bt2_udata.rec.chunk_addr = udata->chunk_block.offset; if(idx_info->pline->nused > 0) { /* filtered chunk */ H5_CHECKED_ASSIGN(bt2_udata.rec.nbytes, uint32_t, udata->chunk_block.length, hsize_t); bt2_udata.rec.filter_mask = udata->filter_mask; } /* end if */ else { /* non-filtered chunk */ bt2_udata.rec.nbytes = idx_info->layout->size; bt2_udata.rec.filter_mask = 0; } /* end else */ for(u = 0; u < (idx_info->layout->ndims - 1); u++) bt2_udata.rec.scaled[u] = udata->common.scaled[u]; /* Update record for v2 B-tree (could be insert or modify) */ if(H5B2_update(bt2, &bt2_udata, H5D__bt2_mod_cb, &bt2_udata) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTUPDATE, FAIL, "unable to update record in v2 B-tree") done: FUNC_LEAVE_NOAPI(ret_value) } /* H5D__bt2_idx_insert() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_found_cb * * Purpose: Retrieve record for dataset chunk when it is found in a v2 B-tree. * This is the callback for H5B2_find() which is called in * H5D__bt2_idx_get_addr() and H5D__bt2_idx_insert(). * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_found_cb(const void *nrecord, void *op_data) { FUNC_ENTER_STATIC_NOERR *(H5D_chunk_rec_t *)op_data = *(const H5D_chunk_rec_t *)nrecord; FUNC_LEAVE_NOAPI(SUCCEED) } /* H5D__bt2_found_cb() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_get_addr * * Purpose: Get the file address of a chunk if file space has been * assigned. Save the retrieved information in the udata * supplied. * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_get_addr(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata) { H5B2_t *bt2; /* v2 B-tree handle for indexing chunks */ H5D_bt2_ud_t bt2_udata; /* User data for v2 B-tree calls */ H5D_chunk_rec_t found_rec; /* Record found from searching for object */ unsigned u; /* Local index variable */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Sanity checks */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(idx_info->layout->ndims > 0); HDassert(idx_info->storage); HDassert(H5F_addr_defined(idx_info->storage->idx_addr)); HDassert(udata); /* Check if the v2 B-tree is open yet */ if(NULL == idx_info->storage->u.btree2.bt2) { /* Open existing v2 B-tree */ if(H5D__bt2_idx_open(idx_info) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't open v2 B-tree") } /* end if */ else /* Patch the top level file pointer contained in bt2 if needed */ if(H5B2_patch_file(idx_info->storage->u.btree2.bt2, idx_info->f) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't patch v2 B-tree file pointer") /* Set convenience pointer to v2 B-tree structure */ bt2 = idx_info->storage->u.btree2.bt2; /* Clear the found record */ found_rec.chunk_addr = HADDR_UNDEF; found_rec.nbytes = 0; found_rec.filter_mask = 0; /* Prepare user data for compare callback */ bt2_udata.rec.chunk_addr = HADDR_UNDEF; bt2_udata.ndims = idx_info->layout->ndims - 1; /* Set the chunk offset to be searched for */ for(u = 0; u < (idx_info->layout->ndims - 1); u++) bt2_udata.rec.scaled[u] = udata->common.scaled[u]; /* Go get chunk information from v2 B-tree */ if(H5B2_find(bt2, &bt2_udata, H5D__bt2_found_cb, &found_rec) < 0) HGOTO_ERROR(H5E_HEAP, H5E_NOTFOUND, FAIL, "can't find object in v2 B-tree") /* Set common info for the chunk */ udata->chunk_block.offset = found_rec.chunk_addr; /* Check for setting other info */ if(H5F_addr_defined(udata->chunk_block.offset)) { /* Sanity check */ HDassert(0 != found_rec.nbytes); /* Set other info for the chunk */ if(idx_info->pline->nused > 0) { /* filtered chunk */ udata->chunk_block.length = found_rec.nbytes; udata->filter_mask = found_rec.filter_mask; } /* end if */ else { /* non-filtered chunk */ udata->chunk_block.length = idx_info->layout->size; udata->filter_mask = 0; } /* end else */ } /* end if */ else { udata->chunk_block.length = 0; udata->filter_mask = 0; } /* end else */ done: FUNC_LEAVE_NOAPI(ret_value) } /* H5D__bt2_idx_get_addr() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_iterate_cb * * Purpose: Translate the B-tree specific chunk record into a generic * form and make the callback to the generic chunk callback * routine. * This is the callback for H5B2_iterate() which is called in * H5D__bt2_idx_iterate(). * * Return: Success: Non-negative * Failure: Negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static int H5D__bt2_idx_iterate_cb(const void *_record, void *_udata) { H5D_bt2_it_ud_t *udata = (H5D_bt2_it_ud_t *)_udata; /* User data */ const H5D_chunk_rec_t *record = (const H5D_chunk_rec_t *)_record; /* Native record */ int ret_value = -1; /* Return value */ FUNC_ENTER_STATIC_NOERR /* Make "generic chunk" callback */ if((ret_value = (udata->cb)(record, udata->udata)) < 0) HERROR(H5E_DATASET, H5E_CALLBACK, "failure in generic chunk iterator callback"); FUNC_LEAVE_NOAPI(ret_value) } /* H5D__bt2_idx_iterate_cb() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_iterate * * Purpose: Iterate over the chunks in an index, making a callback * for each one. * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static int H5D__bt2_idx_iterate(const H5D_chk_idx_info_t *idx_info, H5D_chunk_cb_func_t chunk_cb, void *chunk_udata) { H5B2_t *bt2; /* v2 B-tree handle for indexing chunks */ H5D_bt2_it_ud_t udata; /* User data for B-tree iterator callback */ int ret_value = FAIL; /* Return value */ FUNC_ENTER_STATIC /* Sanity checks */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(idx_info->storage); HDassert(H5F_addr_defined(idx_info->storage->idx_addr)); HDassert(chunk_cb); HDassert(chunk_udata); /* Check if the v2 B-tree is open yet */ if(NULL == idx_info->storage->u.btree2.bt2) { /* Open existing v2 B-tree */ if(H5D__bt2_idx_open(idx_info) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't open v2 B-tree") } /* end if */ else /* Patch the top level file pointer contained in bt2 if needed */ if(H5B2_patch_file(idx_info->storage->u.btree2.bt2, idx_info->f) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't patch v2 B-tree file pointer") /* Set convenience pointer to v2 B-tree structure */ bt2 = idx_info->storage->u.btree2.bt2; /* Prepare user data for iterate callback */ udata.cb = chunk_cb; udata.udata = chunk_udata; /* Iterate over the records in the v2 B-tree */ if((ret_value = H5B2_iterate(bt2, H5D__bt2_idx_iterate_cb, &udata)) < 0) HERROR(H5E_DATASET, H5E_BADITER, "unable to iterate over chunk v2 B-tree"); done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_iterate() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_remove_cb() * * Purpose: Free space for 'dataset chunk' object as v2 B-tree * is being deleted or v2 B-tree node is removed. * This is the callback for H5B2_remove() and H5B2_delete() which * which are called in H5D__bt2_idx_remove() and H5D__bt2_idx_delete(). * * Return: Success: non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_remove_cb(const void *_record, void *_udata) { const H5D_chunk_rec_t *record = (const H5D_chunk_rec_t *)_record; /* The native record */ H5F_t *f = (H5F_t *)_udata; /* User data for removal callback */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Sanity checks */ HDassert(f); /* Free the space in the file for the object being removed */ H5_CHECK_OVERFLOW(record->nbytes, uint32_t, hsize_t); if(H5MF_xfree(f, H5FD_MEM_DRAW, record->chunk_addr, (hsize_t)record->nbytes) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "unable to free chunk") done: FUNC_LEAVE_NOAPI(ret_value) } /* H5D__bt2_remove_cb() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_remove * * Purpose: Remove chunk from index. * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_remove(const H5D_chk_idx_info_t *idx_info, H5D_chunk_common_ud_t *udata) { H5B2_t *bt2; /* v2 B-tree handle for indexing chunks */ H5D_bt2_ud_t bt2_udata; /* User data for v2 B-tree find call */ unsigned u; /* Local index variable */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Sanity checks */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(idx_info->storage); HDassert(H5F_addr_defined(idx_info->storage->idx_addr)); HDassert(udata); /* Check if the v2 B-tree is open yet */ if(NULL == idx_info->storage->u.btree2.bt2) { /* Open existing v2 B-tree */ if(H5D__bt2_idx_open(idx_info) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't open v2 B-tree") } /* end if */ else /* Patch the top level file pointer contained in bt2 if needed */ if(H5B2_patch_file(idx_info->storage->u.btree2.bt2, idx_info->f) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't patch v2 B-tree file pointer") /* Set convenience pointer to v2 B-tree structure */ bt2 = idx_info->storage->u.btree2.bt2; /* Prepare user data for compare callback */ bt2_udata.ndims = idx_info->layout->ndims - 1; /* Initialize the record to search for */ for(u = 0; u < (idx_info->layout->ndims - 1); u++) bt2_udata.rec.scaled[u] = udata->scaled[u]; /* Remove the record for the "dataset chunk" object from the v2 B-tree */ /* (space in the file for the object is freed in the 'remove' callback) */ if(H5B2_remove(bt2, &bt2_udata, (H5F_INTENT(idx_info->f) & H5F_ACC_SWMR_WRITE) ? NULL : H5D__bt2_remove_cb, idx_info->f) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTREMOVE, FAIL, "can't remove object from B-tree") done: FUNC_LEAVE_NOAPI(ret_value) } /* H5D__bt2_idx_remove() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_delete * * Purpose: Delete index and raw data storage for entire dataset * (i.e. all chunks) * * Return: Success: Non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * * Modifications: * Vailin Choi; March 2011 * Initialize size of an unfiltered chunk. * This is a fix for for the assertion failure in: * [src/H5FSsection.c:968: H5FS_sect_link_size: Assertion `bin < sinfo->nbins' failed.] * which is uncovered by test_unlink_chunked_dataset() in test/unlink.c * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_delete(const H5D_chk_idx_info_t *idx_info) { H5B2_remove_t remove_op; /* The removal callback */ H5D_bt2_ctx_ud_t u_ctx; /* data for context call */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Sanity checks */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(idx_info->storage); /* Check if the index data structure has been allocated */ if(H5F_addr_defined(idx_info->storage->idx_addr)) { /* Set up user data for creating context */ u_ctx.f = idx_info->f; u_ctx.ndims = idx_info->layout->ndims - 1; u_ctx.chunk_size = idx_info->layout->size; u_ctx.dim = idx_info->layout->dim; /* Set remove operation. Do not remove chunks in SWMR_WRITE mode */ if(H5F_INTENT(idx_info->f) & H5F_ACC_SWMR_WRITE) remove_op = NULL; else remove_op = H5D__bt2_remove_cb; /* Delete the v2 B-tree */ /*(space in the file for each object is freed in the 'remove' callback) */ if(H5B2_delete(idx_info->f, idx_info->storage->idx_addr, &u_ctx, remove_op, idx_info->f) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTDELETE, FAIL, "can't delete v2 B-tree") idx_info->storage->idx_addr = HADDR_UNDEF; } /* end if */ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_delete() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_copy_setup * * Purpose: Set up any necessary information for copying chunks * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_copy_setup(const H5D_chk_idx_info_t *idx_info_src, const H5D_chk_idx_info_t *idx_info_dst) { herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Source file */ HDassert(idx_info_src); HDassert(idx_info_src->f); HDassert(idx_info_src->pline); HDassert(idx_info_src->layout); HDassert(idx_info_src->storage); /* Destination file */ HDassert(idx_info_dst); HDassert(idx_info_dst->f); HDassert(idx_info_dst->pline); HDassert(idx_info_dst->layout); HDassert(idx_info_dst->storage); HDassert(!H5F_addr_defined(idx_info_dst->storage->idx_addr)); /* Check if the source v2 B-tree is open yet */ if(NULL == idx_info_src->storage->u.btree2.bt2) if(H5D__bt2_idx_open(idx_info_src) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't open v2 B-tree") /* Set copied metadata tag */ H5_BEGIN_TAG(H5AC__COPIED_TAG); /* Create v2 B-tree that describes the chunked dataset in the destination file */ if(H5D__bt2_idx_create(idx_info_dst) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize chunked storage") HDassert(H5F_addr_defined(idx_info_dst->storage->idx_addr)); /* Reset metadata tag */ H5_END_TAG done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_copy_setup() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_copy_shutdown * * Purpose: Shutdown any information from copying chunks * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_copy_shutdown(H5O_storage_chunk_t *storage_src, H5O_storage_chunk_t *storage_dst) { herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check args */ HDassert(storage_src); HDassert(storage_src->u.btree2.bt2); HDassert(storage_dst); HDassert(storage_dst->u.btree2.bt2); /* Close v2 B-tree for source file */ if(H5B2_close(storage_src->u.btree2.bt2) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "unable to close v2 B-tree") storage_src->u.btree2.bt2 = NULL; /* Close v2 B-tree for destination file */ if(H5B2_close(storage_dst->u.btree2.bt2) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "unable to close v2 B-tree") storage_dst->u.btree2.bt2 = NULL; done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_copy_shutdown() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_size * * Purpose: Retrieve the amount of index storage for chunked dataset * * Return: Success: Non-negative * Failure: negative * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_size(const H5D_chk_idx_info_t *idx_info, hsize_t *index_size) { H5B2_t *bt2_cdset = NULL; /* Pointer to v2 B-tree structure */ herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check args */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->pline); HDassert(idx_info->layout); HDassert(idx_info->storage); HDassert(H5F_addr_defined(idx_info->storage->idx_addr)); HDassert(index_size); /* Open v2 B-tree */ if(H5D__bt2_idx_open(idx_info) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't open v2 B-tree") /* Set convenience pointer to v2 B-tree structure */ bt2_cdset = idx_info->storage->u.btree2.bt2; /* Get v2 B-tree size for indexing chunked dataset */ if(H5B2_size(bt2_cdset, index_size) < 0) HGOTO_ERROR(H5E_SYM, H5E_CANTGET, FAIL, "can't retrieve v2 B-tree storage info for chunked dataset") done: /* Close v2 B-tree index */ if(bt2_cdset && H5B2_close(bt2_cdset) < 0) HDONE_ERROR(H5E_SYM, H5E_CLOSEERROR, FAIL, "can't close v2 B-tree for tracking chunked dataset") idx_info->storage->u.btree2.bt2 = NULL; FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_size() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_reset * * Purpose: Reset indexing information. * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr) { FUNC_ENTER_STATIC_NOERR /* Sanity checks */ HDassert(storage); /* Reset index info */ if(reset_addr) storage->idx_addr = HADDR_UNDEF; storage->u.btree2.bt2 = NULL; FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5D__bt2_idx_reset() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_dump * * Purpose: Dump indexing information to a stream. * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_dump(const H5O_storage_chunk_t *storage, FILE *stream) { FUNC_ENTER_STATIC_NOERR /* Sanity checks */ HDassert(storage); HDassert(stream); HDfprintf(stream, " Address: %" PRIuHADDR "\n", storage->idx_addr); FUNC_LEAVE_NOAPI(SUCCEED) } /* end H5D__bt2_idx_dump() */ /*------------------------------------------------------------------------- * Function: H5D__bt2_idx_dest * * Purpose: Release indexing information in memory. * * Return: Non-negative on success/Negative on failure * * Programmer: Vailin Choi; June 2010 * *------------------------------------------------------------------------- */ static herr_t H5D__bt2_idx_dest(const H5D_chk_idx_info_t *idx_info) { herr_t ret_value = SUCCEED; /* Return value */ FUNC_ENTER_STATIC /* Check args */ HDassert(idx_info); HDassert(idx_info->f); HDassert(idx_info->storage); /* Check if the v2-btree is open */ if(idx_info->storage->u.btree2.bt2) { /* Patch the top level file pointer contained in bt2 if needed */ if(H5B2_patch_file(idx_info->storage->u.btree2.bt2, idx_info->f) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTOPENOBJ, FAIL, "can't patch v2 B-tree file pointer") /* Close v2 B-tree */ if(H5B2_close(idx_info->storage->u.btree2.bt2) < 0) HGOTO_ERROR(H5E_DATASET, H5E_CANTCLOSEOBJ, FAIL, "can't close v2 B-tree") idx_info->storage->u.btree2.bt2 = NULL; } /* end if */ done: FUNC_LEAVE_NOAPI(ret_value) } /* end H5D__bt2_idx_dest() */