diff options
author | John Mainzer <mainzer@hdfgroup.org> | 2014-06-18 18:18:36 (GMT) |
---|---|---|
committer | John Mainzer <mainzer@hdfgroup.org> | 2014-06-18 18:18:36 (GMT) |
commit | 12ee3deb82f879cd4cf40e1604442e41ab2359bf (patch) | |
tree | 455b95f4dd1abb0873fa677ed0c372a64ed56e92 /src/H5HFpkg.h | |
parent | 471aedb1e85ba6b4c5b829373963c21d77ce0835 (diff) | |
download | hdf5-12ee3deb82f879cd4cf40e1604442e41ab2359bf.zip hdf5-12ee3deb82f879cd4cf40e1604442e41ab2359bf.tar.gz hdf5-12ee3deb82f879cd4cf40e1604442e41ab2359bf.tar.bz2 |
[svn-r25321] Reworked and enhanced extreme sanity check in H5C.c, fixing an
uninitialized variable bug in passing.
Added the H5C_get_entry_ptr_from_addr() and H5C_verify_entry_type()
in H5C.c, along with their pass through functions in H5AC.c. Note
that H5C_get_entry_ptr_from_addr() is quite slimey, and should be
avoided if possible.
Updated fractal heap to use flush ordering to force children
in the hdr / iblock / dblock tree to be flushed prior to parents.
This is part of a port of the fractal heap to the V3 cache, although
I gather that it will also be useful for SWMR.
Added sanity checking code to the fractal heap to verify that direct
blocks are flushed before their parent indirect blocks, child indirect
block are flushed prior to their parent indirect blocks, and that the
root iblock or dblock is flushed prior to the header
Tested on:
Jam: Serial and parallel
Phoenix (Debian): serial, debug and production
amazon (MacOS): serial
Diffstat (limited to 'src/H5HFpkg.h')
-rw-r--r-- | src/H5HFpkg.h | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/H5HFpkg.h b/src/H5HFpkg.h index a17088b..63c1a3e 100644 --- a/src/H5HFpkg.h +++ b/src/H5HFpkg.h @@ -384,6 +384,13 @@ struct H5HF_indirect_t { size_t rc; /* Reference count of objects using this block */ H5HF_hdr_t *hdr; /* Shared heap header info */ struct H5HF_indirect_t *parent; /* Shared parent indirect block info */ + struct H5HF_indirect_t + *fd_parent; /* Saved copy of the parent pointer -- this */ + /* necessary as the parent field is sometimes */ + /* nulled out before the eviction notify call */ + /* is made from the metadata cache. Since */ + /* this call cancels flush dependencies, it */ + /* needs this information. */ unsigned par_entry; /* Entry in parent's table */ haddr_t addr; /* Address of this indirect block on disk */ size_t size; /* Size of indirect block on disk */ @@ -407,6 +414,12 @@ typedef struct H5HF_direct_t { /* Internal heap information */ H5HF_hdr_t *hdr; /* Shared heap header info */ H5HF_indirect_t *parent; /* Shared parent indirect block info */ + H5HF_indirect_t *fd_parent; /* Saved copy of the parent pointer -- this */ + /* necessary as the parent field is sometimes */ + /* nulled out before the eviction notify call */ + /* is made from the metadata cache. Since */ + /* this call cancels flush dependencies, it */ + /* needs this information. */ unsigned par_entry; /* Entry in parent's table */ size_t size; /* Size of direct block */ hsize_t file_size; /* Size of direct block in file (only valid when block's space is being freed) */ |