diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2002-06-05 18:17:57 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2002-06-05 18:17:57 (GMT) |
commit | 7ab24efc8ad4bf6682eaa180096af96f177e3ed0 (patch) | |
tree | fdccfe1ca9b75426406e56fbad0049d9e5f4beec /src/H5Fpkg.h | |
parent | 1eb15039114f4bcda7269cc406111138ceba1f0f (diff) | |
download | hdf5-7ab24efc8ad4bf6682eaa180096af96f177e3ed0.zip hdf5-7ab24efc8ad4bf6682eaa180096af96f177e3ed0.tar.gz hdf5-7ab24efc8ad4bf6682eaa180096af96f177e3ed0.tar.bz2 |
[svn-r5537] Purpose:
Code improvement.
Description:
Added boot block and driver info block checksumming feature to the shared
file information. This prevents these blocks from being written out
multiple times when they haven't changed.
This reduces the number of I/O operations which hit the disk for my test
program from 15 to 14 (i.e. from 393 to 14, overall).
Platforms tested:
Solaris 2.7 (arabica) w/FORTRAN and FreeBSD 4.5 (sleipnir) w/C++
Diffstat (limited to 'src/H5Fpkg.h')
-rw-r--r-- | src/H5Fpkg.h | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/src/H5Fpkg.h b/src/H5Fpkg.h index cfd79d9..077da28 100644 --- a/src/H5Fpkg.h +++ b/src/H5Fpkg.h @@ -100,30 +100,32 @@ typedef struct H5F_file_t { haddr_t base_addr; /* Absolute base address for rel.addrs. */ haddr_t freespace_addr; /* Relative address of free-space info */ haddr_t driver_addr; /* File driver information block address*/ + unsigned boot_chksum; /* Boot block checksum */ + unsigned drvr_chksum; /* Driver info block checksum */ struct H5AC_t *cache; /* The object cache */ H5F_create_t *fcpl; /* File-creation property list */ - /* This actually ends up being a pointer to a */ - /* H5P_t type, which is returned from H5P_copy */ - /* But that's ok because we only access it like */ - /* a H5F_create_t until we pass it back to */ - /* H5P_close to release it - QAK */ - int mdc_nelmts; /* Size of meta data cache (elements) */ - int rdcc_nelmts; /* Size of raw data chunk cache (elmts) */ + /* (This actually ends up being a pointer to a */ + /* H5P_t type, which is returned from H5P_copy */ + /* But that's ok because we only access it like */ + /* a H5F_create_t until we pass it back to */ + /* H5P_close to release it - QAK) */ + int mdc_nelmts; /* Size of meta data cache (elements) */ + int rdcc_nelmts; /* Size of raw data chunk cache (elmts) */ size_t rdcc_nbytes; /* Size of raw data chunk cache (bytes) */ double rdcc_w0; /* Preempt read chunks first? [0.0..1.0]*/ hsize_t threshold; /* Threshold for alignment */ hsize_t alignment; /* Alignment */ unsigned gc_ref; /* Garbage-collect references? */ struct H5G_t *root_grp; /* Open root group */ - int ncwfs; /* Num entries on cwfs list */ + int ncwfs; /* Num entries on cwfs list */ struct H5HG_heap_t **cwfs; /* Global heap cache */ /* Data Sieve Buffering fields */ - unsigned char *sieve_buf; /* Buffer to hold data sieve buffer */ - haddr_t sieve_loc; /* File location (offset) of the data sieve buffer */ - hsize_t sieve_size; /* Size of the data sieve buffer used (in bytes) */ - hsize_t sieve_buf_size; /* Size of the data sieve buffer allocated (in bytes) */ - unsigned sieve_dirty; /* Flag to indicate that the data sieve buffer is dirty */ + unsigned char *sieve_buf; /* Buffer to hold data sieve buffer */ + haddr_t sieve_loc; /* File location (offset) of the data sieve buffer */ + hsize_t sieve_size; /* Size of the data sieve buffer used (in bytes) */ + hsize_t sieve_buf_size; /* Size of the data sieve buffer allocated (in bytes) */ + unsigned sieve_dirty; /* Flag to indicate that the data sieve buffer is dirty */ H5F_rdcc_t rdcc; /* Raw data chunk cache */ } H5F_file_t; |