summaryrefslogtreecommitdiffstats
path: root/src/H5Farray.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2002-08-27 13:41:32 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2002-08-27 13:41:32 (GMT)
commit32b58cef083388eec4b81c956eef717f59f24a87 (patch)
tree356224f63e62b8e4810f75308376323a9474a621 /src/H5Farray.c
parentd85657351a9252a34bd766a31c067949353ff8d0 (diff)
downloadhdf5-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/H5Farray.c')
-rw-r--r--src/H5Farray.c64
1 files changed, 0 insertions, 64 deletions
diff --git a/src/H5Farray.c b/src/H5Farray.c
index e3657d0..8e01099 100644
--- a/src/H5Farray.c
+++ b/src/H5Farray.c
@@ -20,7 +20,6 @@
#include "H5Fpkg.h"
#include "H5FDprivate.h" /*file driver */
#include "H5Iprivate.h"
-#include "H5MFprivate.h"
#include "H5MMprivate.h" /*memory management */
#include "H5Oprivate.h"
#include "H5Pprivate.h"
@@ -37,69 +36,6 @@ static int interface_initialize_g = 0;
/*-------------------------------------------------------------------------
- * Function: H5F_arr_create
- *
- * Purpose: Creates an array of bytes.
- *
- * Return: Non-negative on success/Negative on failure
- *
- * Programmer: Robb Matzke
- * Friday, January 16, 1998
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5F_arr_create (H5F_t *f, struct H5O_layout_t *layout/*in,out*/)
-{
- unsigned u;
- hsize_t nbytes;
- herr_t ret_value = SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5F_arr_create, FAIL);
-
- /* check args */
- assert (f);
- assert (layout);
- layout->addr = HADDR_UNDEF; /*just in case we fail*/
-
- switch (layout->type) {
- case H5D_CONTIGUOUS:
- /* Reserve space in the file for the entire array */
- for (u=0, nbytes=1; u<layout->ndims; u++)
- nbytes *= layout->dim[u];
- assert (nbytes>0);
- if (HADDR_UNDEF==(layout->addr=H5MF_alloc(f, H5FD_MEM_DRAW, nbytes)))
- HGOTO_ERROR (H5E_IO, H5E_NOSPACE, FAIL, "unable to reserve file space");
- break;
-
- case H5D_CHUNKED:
- /* Create the root of the B-tree that describes chunked storage */
- if (H5F_istore_create (f, layout/*out*/)<0)
- HGOTO_ERROR (H5E_IO, H5E_CANTINIT, FAIL, "unable to initialize chunked storage");
- break;
-
- case H5D_COMPACT:
- /* Reserve space in layout header message for the entire array. */
- assert(layout->size>0);
- if (NULL==(layout->buf=H5MM_malloc(layout->size)))
- HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate memory for compact dataset");
- layout->dirty = TRUE;
- break;
-
- default:
- assert ("not implemented yet" && 0);
- HGOTO_ERROR (H5E_IO, H5E_UNSUPPORTED, FAIL,
- "unsupported storage layout");
- } /* end switch */
-
-done:
- FUNC_LEAVE (ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
* Function: H5F_arr_read
*
* Purpose: Reads a hyperslab of a file byte array into a hyperslab of