diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2003-02-10 17:26:09 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2003-02-10 17:26:09 (GMT) |
commit | 24d8506dd564c5cc0fdebb5ebdfaec7bda5a7435 (patch) | |
tree | 6b2eb3bb1e782c40718204882428e6471b6281ac /test/istore.c | |
parent | 738661ab9f409b8d961ba1402d6c4dd5f99ecb43 (diff) | |
download | hdf5-24d8506dd564c5cc0fdebb5ebdfaec7bda5a7435.zip hdf5-24d8506dd564c5cc0fdebb5ebdfaec7bda5a7435.tar.gz hdf5-24d8506dd564c5cc0fdebb5ebdfaec7bda5a7435.tar.bz2 |
[svn-r6387] Purpose:
Bug Fix
Description:
Metadata cache in parallel I/O can cause hangs in applications which
perform independent I/O on chunked datasets, because the metadata cache
can attempt to flush out dirty metadata from only a single process, instead
of collectively from all processes.
Solution:
Pass a dataset transfer property list down from every API function which
could possibly trigger metadata I/O.
Then, split the metadata cache into two sets of entries to allow dirty
metadata to be set aside when a hash table collision occurs during
independent I/O.
Platforms tested:
Tested h5committest {arabica (fortran), eirene (fortran, C++)
modi4 (parallel, fortran)}
FreeBSD 4.7 (sleipnir) serial & parallel
Misc. update:
Updated release_docs/RELEASE
Diffstat (limited to 'test/istore.c')
-rw-r--r-- | test/istore.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/test/istore.c b/test/istore.c index 3dfb8cf..3f1e16e 100644 --- a/test/istore.c +++ b/test/istore.c @@ -101,7 +101,7 @@ new_object(H5F_t *f, const char *name, unsigned ndims, H5G_entry_t *ent/*out*/) /* Create the object header */ HDmemset(ent,0,sizeof(H5G_entry_t)); - if (H5O_create(f, 64, ent)) { + if (H5O_create(f, H5P_DATASET_XFER_DEFAULT, 64, ent)) { H5_FAILED(); puts(" H5O_create() = NULL"); goto error; @@ -118,15 +118,15 @@ new_object(H5F_t *f, const char *name, unsigned ndims, H5G_entry_t *ent/*out*/) } } /* Create the root of the B-tree that describes chunked storage */ - H5F_istore_create (f, &layout/*in,out*/); - if (H5O_modify(ent, H5O_LAYOUT, H5O_NEW_MESG, 0, 1, &layout) < 0) { + H5F_istore_create (f, H5P_DATASET_XFER_DEFAULT, &layout/*in,out*/); + if (H5O_modify(ent, H5O_LAYOUT, H5O_NEW_MESG, 0, 1, &layout, H5P_DATASET_XFER_DEFAULT) < 0) { H5_FAILED(); puts(" H5O_modify istore message failure."); goto error; } /* Give the object header a name */ - if (H5G_insert(H5G_entof(H5G_rootof(f)), name, ent) < 0) { + if (H5G_insert(H5G_entof(H5G_rootof(f)), name, ent, H5P_DATASET_XFER_DEFAULT) < 0) { H5_FAILED(); printf(" H5G_insert(f, name=\"%s\", ent) failed\n", name); goto error; @@ -247,7 +247,7 @@ test_extend(H5F_t *f, const char *prefix, printf(" Cannot create %u-d object `%s'\n", ndims, name); goto error; } - if (NULL == H5O_read(&handle, H5O_LAYOUT, 0, &layout)) { + if (NULL == H5O_read(&handle, H5O_LAYOUT, 0, &layout, H5P_DATASET_XFER_DEFAULT)) { H5_FAILED(); puts(" Unable to read istore message."); goto error; @@ -456,7 +456,7 @@ test_sparse(H5F_t *f, const char *prefix, size_t nblocks, printf(" Cannot create %u-d object `%s'\n", ndims, name); goto error; } - if (NULL == H5O_read(&handle, H5O_LAYOUT, 0, &layout)) { + if (NULL == H5O_read(&handle, H5O_LAYOUT, 0, &layout, H5P_DATASET_XFER_DEFAULT)) { H5_FAILED(); printf(" Unable to read istore message\n"); goto error; |