diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2001-05-02 15:04:55 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2001-05-02 15:04:55 (GMT) |
commit | 076efa3382acdff44b9560909c9c28832c0ff1fe (patch) | |
tree | 822177177ff8eecd0ef1e2f64236352ea73059b8 /src/H5FD.c | |
parent | f21aa7af8ccc49e57156e2d0f99eb2770f837517 (diff) | |
download | hdf5-076efa3382acdff44b9560909c9c28832c0ff1fe.zip hdf5-076efa3382acdff44b9560909c9c28832c0ff1fe.tar.gz hdf5-076efa3382acdff44b9560909c9c28832c0ff1fe.tar.bz2 |
[svn-r3885] Purpose:
Document bug fix
Description:
IMPORTANT! IMPORTANT! IMPORTANT!
A case where metadata in a file could get corrupted in certain unusual
sitations was detected and fixed.
In certain circumstances, metadata could get cached in the raw data cache,
and if that particular piece of metadata was updated on disk while
incorrectly cached, the new metadata would get overwritten with the stale
metadata from the raw data cache when it was flushed out.
Additionally, I've patched up the raw data cache to be smarter about how
much it caches and how much I/O it triggers, leading to some speedups.
Solution:
Changed the raw data I/O routines which perform caching to require a
parameter with the size of the dataset being accessed and limited the
cache to no more than that many bytes.
Platforms tested:
FreeBSD 4.3 (hawkwind)
Diffstat (limited to 'src/H5FD.c')
-rw-r--r-- | src/H5FD.c | 2 |
1 files changed, 1 insertions, 1 deletions
@@ -2315,7 +2315,7 @@ H5FD_write(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t s /* New piece of metadata doesn't adjoin or overlap the existing accumulator */ else { /* Write out the existing metadata accumulator, with dispatch to driver */ - if ((file->cls->write)(file, type, dxpl_id, file->accum_loc, file->accum_size, file->meta_accum)<0) + if ((file->cls->write)(file, H5FD_MEM_DEFAULT, dxpl_id, file->accum_loc, file->accum_size, file->meta_accum)<0) HRETURN_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "driver write request failed"); /* Cache the new piece of metadata */ |