diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2002-08-27 13:41:32 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2002-08-27 13:41:32 (GMT) |
commit | 32b58cef083388eec4b81c956eef717f59f24a87 (patch) | |
tree | 356224f63e62b8e4810f75308376323a9474a621 /src/H5Sprivate.h | |
parent | d85657351a9252a34bd766a31c067949353ff8d0 (diff) | |
download | hdf5-32b58cef083388eec4b81c956eef717f59f24a87.zip hdf5-32b58cef083388eec4b81c956eef717f59f24a87.tar.gz hdf5-32b58cef083388eec4b81c956eef717f59f24a87.tar.bz2 |
[svn-r5894] Purpose:
Bug fix/Code cleanup/New Feature
Description:
Correct problems with writing fill-values to external storage and allocate
the data storage at the correct times.
Also, mostly straighten out the strange code which allocates and fills
raw data storage for datasets. Things are still a bit odd in that the
fill-values for chunked datasets are written when the space is allocated,
instead of in a separate routine, but there are two reasons for this:
it's inefficient (especially in parallel) to iterate through all the chunks
twice, and (more importantly) the space needed to store compressed chunks
isn't known until we've got a buffer of compressed fill-values ready to
write to the chunk.
Additionally, add in the H5D_SPACE_ALLOC_INCR and H5D_SPACE_ALLOC_DEFAULT
setting for the "space time", which incorporate the previous behavior of
the space allocation for chunked datasets.
The default settings for the different types of dataset storage are now
as follows:
Contiguous - Late
Chunked - Incremental
Compact - Early
This checkin also incorporates a change to the behavior of external data
storage in two ways - fill-values are _never_ written to external storage
(under the assumption that writing fill-values is triggered by allocating
space in an HDF5 file, and since space is not allocated in the file, the
fill-values should not be written) and external data files are now created
if they don't exist when data is written to them. The fill-value will
probably need to be revisited at some time in the future, this just seemed
like the safer course currently.
I think I cleaned up some compiler errors also, before getting bogged down
in the fixes for the space allocation and fill-values.
Platforms tested:
FreeBSD 4.6 (sleipnir) w/serial & parallel. Will be testing on IRIX64
6.5 (modi4) in serial & parallel shortly.
Diffstat (limited to 'src/H5Sprivate.h')
-rw-r--r-- | src/H5Sprivate.h | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/H5Sprivate.h b/src/H5Sprivate.h index 393f6bb..083847e 100644 --- a/src/H5Sprivate.h +++ b/src/H5Sprivate.h @@ -109,7 +109,7 @@ typedef struct H5S_conv_t { /* Write directly from app buffer to file */ - herr_t (*write)(H5F_t *f, const struct H5O_layout_t *layout, + herr_t (*write)(H5F_t *f, struct H5O_layout_t *layout, H5P_genplist_t *dc_plist, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, hid_t dxpl_id, const void *buf); @@ -156,7 +156,7 @@ __DLL__ int H5S_cmp(const H5S_t *ds1, const H5S_t *ds2); __DLL__ htri_t H5S_is_simple(const H5S_t *sdim); __DLL__ herr_t H5S_extent_release(H5S_t *space); __DLL__ int H5S_extend(H5S_t *space, const hsize_t *size); -__DLL__ herr_t H5S_set_extent(H5S_t *space, const hsize_t *size); +__DLL__ int H5S_set_extent(H5S_t *space, const hsize_t *size); __DLL__ herr_t H5S_debug(H5F_t *f, const void *_mesg, FILE *stream, int indent, int fwidth); @@ -168,7 +168,7 @@ __DLL__ herr_t H5S_select_iterate(void *buf, hid_t type_id, H5S_t *space, H5D_operator_t op, void *operator_data); __DLL__ herr_t H5S_select_fill(void *fill, size_t fill_size, const H5S_t *space, void *buf); -__DLL__ herr_t H5S_select_fscat (H5F_t *f, const struct H5O_layout_t *layout, +__DLL__ herr_t H5S_select_fscat (H5F_t *f, struct H5O_layout_t *layout, H5P_genplist_t *dc_plist, size_t elmt_size, const H5S_t *file_space, H5S_sel_iter_t *file_iter, hsize_t nelmts, hid_t dxpl_id, const void *_buf); @@ -185,7 +185,7 @@ __DLL__ hsize_t H5S_select_mgath (const void *_buf, size_t elmt_size, __DLL__ herr_t H5S_select_read(H5F_t *f, const struct H5O_layout_t *layout, H5P_genplist_t *dc_plist, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, hid_t dxpl_id, void *buf/*out*/); -__DLL__ herr_t H5S_select_write(H5F_t *f, const struct H5O_layout_t *layout, +__DLL__ herr_t H5S_select_write(H5F_t *f, struct H5O_layout_t *layout, H5P_genplist_t *dc_plist, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, hid_t dxpl_id, const void *buf/*out*/); @@ -206,7 +206,7 @@ __DLL__ herr_t H5S_mpio_spaces_read(H5F_t *f, /* MPI-IO function to write directly from app buffer to file rky980813 */ __DLL__ herr_t H5S_mpio_spaces_write(H5F_t *f, - const struct H5O_layout_t *layout, + struct H5O_layout_t *layout, H5P_genplist_t *dc_plist, size_t elmt_size, const H5S_t *file_space, const H5S_t *mem_space, hid_t dxpl_id, |