diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2007-12-20 20:36:08 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2007-12-20 20:36:08 (GMT) |
commit | 6878261a432d9cc8c705aa6c4f85450b29b37150 (patch) | |
tree | 765a4e072ef63bdda33320ca2c16938c5fa7a06f /src/H5FDpublic.h | |
parent | 79a96581a64a4b2f8a6679100a7f369bb963ab94 (diff) | |
download | hdf5-6878261a432d9cc8c705aa6c4f85450b29b37150.zip hdf5-6878261a432d9cc8c705aa6c4f85450b29b37150.tar.gz hdf5-6878261a432d9cc8c705aa6c4f85450b29b37150.tar.bz2 |
[svn-r14353] Description:
- Add hash value for skip list string types, to reduce # of string
comparisons.
- Fixed bug with metadata/small data block aggregator adding size == 0
block into file free space list.
- Refactored metadata/small data block aggregator code into single set of
common routines.
- Changed block aggregator code to be smarter about releasing space in the
'other' block when the 'other' block has aggregated enough data.
Tested on:
FreeBSD/32 6.2 (duty) in debug mode
FreeBSD/64 6.2 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe,
in debug mode
Linux/64-amd64 2.6 (smirom) w/default API=1.6.x, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Mac OS X/32 10.4.10 (amazon) in debug mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode
Diffstat (limited to 'src/H5FDpublic.h')
-rw-r--r-- | src/H5FDpublic.h | 36 |
1 files changed, 15 insertions, 21 deletions
diff --git a/src/H5FDpublic.h b/src/H5FDpublic.h index ebf006b..ea92649 100644 --- a/src/H5FDpublic.h +++ b/src/H5FDpublic.h @@ -222,6 +222,15 @@ typedef struct H5FD_free_t { struct H5FD_free_t *next; } H5FD_free_t; +/* Structure for metadata & "small [raw] data" block aggregation fields */ +typedef struct H5FD_blk_aggr_t { + unsigned long feature_flag; /* Feature flag type */ + hsize_t alloc_size; /* Size for allocating new blocks */ + hsize_t tot_size; /* Total amount of bytes aggregated into block */ + hsize_t size; /* Current size of block left */ + haddr_t addr; /* Location of block left */ +} H5FD_blk_aggr_t; + /* * The main datatype for each driver. Public fields common to all drivers * are declared here and the driver appends private fields in memory. @@ -234,27 +243,11 @@ struct H5FD_t { hsize_t threshold; /* Threshold for alignment */ hsize_t alignment; /* Allocation alignment */ - /* Metadata aggregation fields */ - hsize_t def_meta_block_size; /* Metadata allocation - * block size (if - * aggregating metadata) */ - hsize_t cur_meta_block_size; /* Current size of metadata - * allocation region left */ - haddr_t eoma; /* End of metadata - * allocated region */ - /* (ie. beginning of space available) */ - - /* "Small data" aggregation fields */ - hsize_t def_sdata_block_size; /* "Small data" - * allocation block size - * (if aggregating "small - * data") */ - hsize_t cur_sdata_block_size; /* Current size of "small - * data" allocation - * region left */ - haddr_t eosda; /* End of "small data" - * allocated region */ - /* (ie. beginning of space available) */ + /* Block aggregation info */ + H5FD_blk_aggr_t meta_aggr; /* Metadata aggregation info */ + /* (if aggregating metadata allocations) */ + H5FD_blk_aggr_t sdata_aggr; /* "Small data" aggregation info */ + /* (if aggregating "small data" allocations) */ /* Metadata accumulator fields */ unsigned char *meta_accum; /* Buffer to hold the accumulated metadata */ @@ -304,3 +297,4 @@ H5_DLL herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, unsigned closing); } #endif #endif + |