summaryrefslogtreecommitdiffstats
path: root/src/H5F.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2003-02-10 17:26:09 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2003-02-10 17:26:09 (GMT)
commit24d8506dd564c5cc0fdebb5ebdfaec7bda5a7435 (patch)
tree6b2eb3bb1e782c40718204882428e6471b6281ac /src/H5F.c
parent738661ab9f409b8d961ba1402d6c4dd5f99ecb43 (diff)
downloadhdf5-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 'src/H5F.c')
-rw-r--r--src/H5F.c109
1 files changed, 60 insertions, 49 deletions
diff --git a/src/H5F.c b/src/H5F.c
index 34c0dc0..3ca2c30 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -63,12 +63,19 @@ typedef struct H5F_olist_t {
} H5F_olist_t;
/* PRIVATE PROTOTYPES */
+static H5F_t *H5F_open(const char *name, unsigned flags, hid_t fcpl_id,
+ hid_t fapl_id, hid_t dxpl_id);
+static herr_t H5F_close(H5F_t *f);
+static herr_t H5F_close_all(void);
+#ifdef NOT_YET
+static herr_t H5F_flush_all(hbool_t invalidate);
+static int H5F_flush_all_cb(H5F_t *f, hid_t fid, const void *_invalidate);
+#endif /* NOT_YET */
static H5F_t *H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id);
-static herr_t H5F_dest(H5F_t *f);
-static herr_t H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
+static herr_t H5F_dest(H5F_t *f, hid_t dxpl_id);
+static herr_t H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, hbool_t invalidate,
hbool_t alloc_only, hbool_t closing);
-static haddr_t H5F_locate_signature(H5FD_t *file);
-static int H5F_flush_all_cb(H5F_t *f, hid_t fid, const void *_invalidate);
+static haddr_t H5F_locate_signature(H5FD_t *file, hid_t dxpl_id);
static herr_t H5F_get_objects(H5F_t *f, unsigned types, hid_t *obj_id_list,
unsigned *obj_id_count);
static herr_t H5F_get_objects_cb(void *obj_ptr, hid_t obj_id, void *key);
@@ -634,6 +641,7 @@ done:
FUNC_LEAVE_NOAPI(ret_value);
}
+#ifdef NOT_YET
/*-------------------------------------------------------------------------
* Function: H5F_flush_all_cb
@@ -691,6 +699,7 @@ H5F_flush_all(hbool_t invalidate)
done:
FUNC_LEAVE_NOAPI(ret_value);
}
+#endif /* NOT_YET */
/*-------------------------------------------------------------------------
@@ -711,7 +720,7 @@ done:
*
*-------------------------------------------------------------------------
*/
-herr_t
+static herr_t
H5F_close_all(void)
{
herr_t ret_value=SUCCEED; /* Return value */
@@ -725,6 +734,7 @@ done:
FUNC_LEAVE_NOAPI(ret_value);
}
+#ifdef NOT_YET
/*--------------------------------------------------------------------------
NAME
@@ -759,6 +769,7 @@ H5F_encode_length_unusual(const H5F_t *f, uint8_t **p, uint8_t *l)
#endif
}
+#endif /* NOT_YET */
/*-------------------------------------------------------------------------
@@ -1293,7 +1304,7 @@ H5F_equal(void *_haystack, hid_t UNUSED id, const void *_needle)
*-------------------------------------------------------------------------
*/
static haddr_t
-H5F_locate_signature(H5FD_t *file)
+H5F_locate_signature(H5FD_t *file, hid_t dxpl_id)
{
haddr_t addr, eoa;
uint8_t buf[H5F_SIGNATURE_LEN];
@@ -1318,7 +1329,7 @@ H5F_locate_signature(H5FD_t *file)
addr = (8==n) ? 0 : (haddr_t)1 << n;
if (H5FD_set_eoa(file, addr+H5F_SIGNATURE_LEN)<0)
HGOTO_ERROR(H5E_IO, H5E_CANTINIT, HADDR_UNDEF, "unable to set EOA value for file signature");
- if (H5FD_read(file, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, addr, H5F_SIGNATURE_LEN, buf)<0)
+ if (H5FD_read(file, H5FD_MEM_SUPER, dxpl_id, addr, H5F_SIGNATURE_LEN, buf)<0)
HGOTO_ERROR(H5E_IO, H5E_CANTINIT, HADDR_UNDEF, "unable to read file signature");
if (!HDmemcmp(buf, H5F_SIGNATURE, H5F_SIGNATURE_LEN))
break;
@@ -1379,7 +1390,7 @@ H5Fis_hdf5(const char *name)
HGOTO_ERROR(H5E_IO, H5E_CANTINIT, FAIL, "unable to open file");
/* The file is an hdf5 file if the hdf5 file signature can be found */
- ret_value = (HADDR_UNDEF!=H5F_locate_signature(file));
+ ret_value = (HADDR_UNDEF!=H5F_locate_signature(file, H5AC_dxpl_id));
done:
/* Close the file */
@@ -1547,7 +1558,7 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5F_dest(H5F_t *f)
+H5F_dest(H5F_t *f, hid_t dxpl_id)
{
herr_t ret_value = SUCCEED;
@@ -1567,11 +1578,11 @@ H5F_dest(H5F_t *f)
H5FL_FREE(H5G_t,f->shared->root_grp);
f->shared->root_grp=NULL;
}
- if (H5AC_dest(f)) {
+ if (H5AC_dest(f, dxpl_id)) {
HERROR(H5E_FILE, H5E_CANTRELEASE, "problems closing file");
ret_value = FAIL; /*but keep going*/
}
- if (H5F_istore_dest (f)<0) {
+ if (H5F_istore_dest (f, dxpl_id)<0) {
HERROR(H5E_FILE, H5E_CANTRELEASE, "problems closing file");
ret_value = FAIL; /*but keep going*/
}
@@ -1702,8 +1713,8 @@ done:
*
*-------------------------------------------------------------------------
*/
-H5F_t *
-H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
+static H5F_t *
+H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t dxpl_id)
{
H5F_t *file=NULL; /*the success return value */
H5F_t *ret_value; /*actual return value */
@@ -1868,19 +1879,19 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
shared->boot_addr = userblock_size;
shared->base_addr = shared->boot_addr;
shared->consist_flags = 0x03;
- if (H5F_flush(file, H5F_SCOPE_LOCAL, FALSE, TRUE,FALSE)<0)
+ if (H5F_flush(file, dxpl_id, H5F_SCOPE_LOCAL, FALSE, TRUE,FALSE)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to write file superblock");
/* Create and open the root group */
- if (H5G_mkroot(file, NULL)<0)
+ if (H5G_mkroot(file, dxpl_id, NULL)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to create/open root group");
} else if (1==shared->nrefs) {
/* Read the superblock if it hasn't been read before. */
- if (HADDR_UNDEF==(shared->boot_addr=H5F_locate_signature(lf)))
+ if (HADDR_UNDEF==(shared->boot_addr=H5F_locate_signature(lf,dxpl_id)))
HGOTO_ERROR(H5E_FILE, H5E_NOTHDF5, NULL, "unable to find file signature");
if (H5FD_set_eoa(lf, shared->boot_addr+fixed_size)<0 ||
- H5FD_read(lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, shared->boot_addr, fixed_size, buf)<0)
+ H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, shared->boot_addr, fixed_size, buf)<0)
HGOTO_ERROR(H5E_FILE, H5E_READERROR, NULL, "unable to read superblock");
/* Signature, already checked */
@@ -1968,7 +1979,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
H5G_SIZEOF_ENTRY(file); /*root group ptr*/
assert(variable_size<=sizeof(buf));
if (H5FD_set_eoa(lf, shared->boot_addr+fixed_size+variable_size)<0 ||
- H5FD_read(lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, shared->boot_addr+fixed_size, variable_size, &buf[fixed_size])<0)
+ H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, shared->boot_addr+fixed_size, variable_size, &buf[fixed_size])<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to read superblock");
H5F_addr_decode(file, &p, &(shared->base_addr)/*out*/);
H5F_addr_decode(file, &p, &(shared->freespace_addr)/*out*/);
@@ -1989,7 +2000,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
if (H5F_addr_defined(shared->driver_addr)) {
haddr_t drv_addr = shared->base_addr + shared->driver_addr;
if (H5FD_set_eoa(lf, drv_addr+16)<0 ||
- H5FD_read(lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, drv_addr, 16, buf)<0)
+ H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, drv_addr, 16, buf)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to read driver information block");
p = buf;
@@ -2009,7 +2020,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
/* Read driver information and decode */
if (H5FD_set_eoa(lf, drv_addr+16+driver_size)<0 ||
- H5FD_read(lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, drv_addr+16, driver_size, &buf[16])<0)
+ H5FD_read(lf, H5FD_MEM_SUPER, dxpl_id, drv_addr+16, driver_size, &buf[16])<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to read file driver information");
if (H5FD_sb_decode(lf, driver_name, &buf[16])<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to decode driver information");
@@ -2025,7 +2036,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
} /* end if */
/* Make sure we can open the root group */
- if (H5G_mkroot(file, &root_ent)<0)
+ if (H5G_mkroot(file, dxpl_id, &root_ent)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to read root group");
/*
@@ -2080,7 +2091,7 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
done:
if (!ret_value && file)
- H5F_dest(file); /* Don't indicate error here, to leave the error stack with the correct error */
+ H5F_dest(file, dxpl_id); /* Don't indicate error here, to leave the error stack with the correct error */
FUNC_LEAVE_NOAPI(ret_value);
}
@@ -2184,7 +2195,7 @@ H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id,
/*
* Create a new file or truncate an existing file.
*/
- if (NULL==(new_file=H5F_open(filename, flags, fcpl_id, fapl_id)))
+ if (NULL==(new_file=H5F_open(filename, flags, fcpl_id, fapl_id, H5AC_dxpl_id)))
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to create file");
/* Get an atom for the file */
@@ -2260,7 +2271,7 @@ H5Fopen(const char *filename, unsigned flags, hid_t fapl_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not file access property list");
/* Open the file */
- if (NULL==(new_file=H5F_open(filename, flags, H5P_FILE_CREATE_DEFAULT, fapl_id)))
+ if (NULL==(new_file=H5F_open(filename, flags, H5P_FILE_CREATE_DEFAULT, fapl_id, H5AC_dxpl_id)))
HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to open file");
/* Get an atom for the file */
@@ -2350,7 +2361,7 @@ H5Fflush(hid_t object_id, H5F_scope_t scope)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "object is not associated with a file");
/* Flush the file */
- if (H5F_flush(f, scope, FALSE, FALSE, FALSE)<0)
+ if (H5F_flush(f, H5AC_dxpl_id, scope, FALSE, FALSE, FALSE)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "flush failed");
done:
@@ -2409,7 +2420,7 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
+H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, hbool_t invalidate,
hbool_t alloc_only, hbool_t closing)
{
uint8_t sbuf[1024]; /* Superblock encoding buffer */
@@ -2447,7 +2458,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
}
if (H5F_SCOPE_DOWN==scope) {
for (i=0; i<f->mtab.nmounts; i++) {
- if (H5F_flush(f->mtab.child[i].file, scope, invalidate, FALSE, closing)<0)
+ if (H5F_flush(f->mtab.child[i].file, dxpl_id, scope, invalidate, FALSE, closing)<0)
nerrors++;
}
}
@@ -2455,7 +2466,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
/* Avoid flushing buffers & caches when alloc_only set */
if(!alloc_only) {
/* flush any cached compact storage raw data */
- if (H5D_flush(f)<0)
+ if (H5D_flush(f, dxpl_id)<0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush dataset cache");
/* If we are invalidating everything (which only happens just before
@@ -2466,7 +2477,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
if(f->shared->lf->feature_flags&H5FD_FEAT_AGGREGATE_METADATA) {
/* Return the unused portion of the metadata block to a free list */
if(f->shared->lf->eoma!=0)
- if(H5FD_free(f->shared->lf,H5FD_MEM_DEFAULT,f->shared->lf->eoma,f->shared->lf->cur_meta_block_size)<0)
+ if(H5FD_free(f->shared->lf,H5FD_MEM_DEFAULT,dxpl_id,f->shared->lf->eoma,f->shared->lf->cur_meta_block_size)<0)
HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL, "can't free metadata block");
/* Reset metadata block information, just in case */
@@ -2476,7 +2487,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
if(f->shared->lf->feature_flags&H5FD_FEAT_AGGREGATE_SMALLDATA) {
/* Return the unused portion of the "small data" block to a free list */
if(f->shared->lf->eosda!=0)
- if(H5FD_free(f->shared->lf,H5FD_MEM_DRAW,f->shared->lf->eosda,f->shared->lf->cur_sdata_block_size)<0)
+ if(H5FD_free(f->shared->lf,H5FD_MEM_DRAW,dxpl_id,f->shared->lf->eosda,f->shared->lf->cur_sdata_block_size)<0)
HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL, "can't free 'small data' block");
/* Reset "small data" block information, just in case */
@@ -2488,7 +2499,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
/* flush the data sieve buffer, if we have a dirty one */
if(f->shared->sieve_buf && f->shared->sieve_dirty) {
/* Write dirty data sieve buffer to file */
- if (H5F_block_write(f, H5FD_MEM_DRAW, f->shared->sieve_loc, f->shared->sieve_size, H5P_DATASET_XFER_DEFAULT, f->shared->sieve_buf)<0)
+ if (H5F_block_write(f, H5FD_MEM_DRAW, f->shared->sieve_loc, f->shared->sieve_size, dxpl_id, f->shared->sieve_buf)<0)
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "block write failed");
/* Reset sieve buffer dirty flag */
@@ -2496,11 +2507,11 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
} /* end if */
/* flush the entire raw data cache */
- if (H5F_istore_flush (f, invalidate)<0)
+ if (H5F_istore_flush (f, dxpl_id, invalidate)<0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush raw data cache");
/* flush (and invalidate) the entire meta data cache */
- if (H5AC_flush(f, NULL, HADDR_UNDEF, invalidate)<0)
+ if (H5AC_flush(f, dxpl_id, NULL, HADDR_UNDEF, invalidate)<0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush meta data cache");
} /* end if */
@@ -2583,7 +2594,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
* format address zero.
*/
H5_CHECK_OVERFLOW(f->shared->base_addr,haddr_t,hsize_t);
- addr = H5FD_alloc(f->shared->lf, H5FD_MEM_SUPER,
+ addr = H5FD_alloc(f->shared->lf, H5FD_MEM_SUPER, dxpl_id,
((hsize_t)f->shared->base_addr + superblock_size + driver_size));
if (HADDR_UNDEF==addr)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to allocate file space for userblock and/or superblock");
@@ -2606,7 +2617,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
/* Compare with current checksums */
if(chksum!=f->shared->boot_chksum) {
/* Write superblock */
- if (H5FD_write(f->shared->lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, f->shared->boot_addr, superblock_size, sbuf)<0)
+ if (H5FD_write(f->shared->lf, H5FD_MEM_SUPER, dxpl_id, f->shared->boot_addr, superblock_size, sbuf)<0)
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to write superblock");
/* Update checksum information if different */
@@ -2623,7 +2634,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
/* Compare with current checksums */
if(chksum!=f->shared->boot_chksum) {
/* Write driver information block */
- if (H5FD_write(f->shared->lf, H5FD_MEM_SUPER, H5P_DATASET_XFER_DEFAULT, f->shared->base_addr+superblock_size, driver_size, dbuf)<0)
+ if (H5FD_write(f->shared->lf, H5FD_MEM_SUPER, dxpl_id, f->shared->base_addr+superblock_size, driver_size, dbuf)<0)
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "unable to write driver information block");
/* Update checksum information if different */
@@ -2633,7 +2644,7 @@ H5F_flush(H5F_t *f, H5F_scope_t scope, hbool_t invalidate,
} /* end else */
/* Flush file buffers to disk */
- if (!alloc_only && H5FD_flush(f->shared->lf,closing)<0)
+ if (!alloc_only && H5FD_flush(f->shared->lf,dxpl_id,closing)<0)
HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "low level flush failed");
/* Check flush errors for children - errors are already on the stack */
@@ -2676,7 +2687,7 @@ done:
* Modified to use the virtual file layer.
*-------------------------------------------------------------------------
*/
-herr_t
+static herr_t
H5F_close(H5F_t *f)
{
H5F_close_degree_t fc_degree; /* What action to take when closing the last file ID for a file */
@@ -2695,7 +2706,7 @@ H5F_close(H5F_t *f)
*/
if (f->nrefs>1) {
/* Decrement reference counts */
- if (H5F_dest(f)<0)
+ if (H5F_dest(f, H5AC_dxpl_id)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "problems closing file");
HGOTO_DONE(SUCCEED);
} /* end if */
@@ -2830,7 +2841,7 @@ H5F_close(H5F_t *f)
H5F_istore_stats(f, FALSE);
/* Flush and destroy all caches */
- if (H5F_flush(f, H5F_SCOPE_LOCAL, TRUE, FALSE, TRUE)<0)
+ if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL, TRUE, FALSE, TRUE)<0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache");
} /* end if */
@@ -2839,7 +2850,7 @@ H5F_close(H5F_t *f)
* shared H5F_file_t struct. If the reference count for the H5F_file_t
* struct reaches zero then destroy it also.
*/
- if (H5F_dest(f)<0)
+ if (H5F_dest(f,H5AC_dxpl_id)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "problems closing file");
done:
@@ -2916,7 +2927,7 @@ done:
*/
static herr_t
H5F_mount(H5G_entry_t *loc, const char *name, H5F_t *child,
- hid_t UNUSED plist_id)
+ hid_t UNUSED plist_id, hid_t dxpl_id)
{
H5G_t *mount_point = NULL; /*mount point group */
H5G_entry_t *mp_ent = NULL; /*mount point symbol table entry*/
@@ -2940,7 +2951,7 @@ H5F_mount(H5G_entry_t *loc, const char *name, H5F_t *child,
*/
if (child->mtab.parent)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "file is already mounted");
- if (NULL==(mount_point=H5G_open(loc, name)))
+ if (NULL==(mount_point=H5G_open(loc, name, dxpl_id)))
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "mount point not found");
parent = H5G_fileof(mount_point);
@@ -3037,7 +3048,7 @@ done:
*-------------------------------------------------------------------------
*/
static herr_t
-H5F_unmount(H5G_entry_t *loc, const char *name)
+H5F_unmount(H5G_entry_t *loc, const char *name, hid_t dxpl_id)
{
H5G_t *mounted = NULL; /*mount point group */
H5G_entry_t *mnt_ent = NULL; /*mounted symbol table entry */
@@ -3058,7 +3069,7 @@ H5F_unmount(H5G_entry_t *loc, const char *name)
* If we get the root group and the file has a parent in the mount tree,
* then we must have found the mount point.
*/
- if (NULL==(mounted=H5G_open(loc, name)))
+ if (NULL==(mounted=H5G_open(loc, name, dxpl_id)))
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "mount point not found");
child = H5G_fileof(mounted);
mnt_ent = H5G_entof(mounted);
@@ -3311,7 +3322,7 @@ H5Fmount(hid_t loc_id, const char *name, hid_t child_id, hid_t plist_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not property list");
/* Do the mount */
- if (H5F_mount(loc, name, child, plist_id)<0)
+ if (H5F_mount(loc, name, child, plist_id, H5AC_dxpl_id)<0)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "unable to mount file");
done:
@@ -3356,7 +3367,7 @@ H5Funmount(hid_t loc_id, const char *name)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name");
/* Unmount */
- if (H5F_unmount(loc, name)<0)
+ if (H5F_unmount(loc, name, H5AC_dxpl_id)<0)
HGOTO_ERROR(H5E_FILE, H5E_MOUNT, FAIL, "unable to unmount file");
done:
@@ -3940,7 +3951,7 @@ H5F_addr_pack(H5F_t UNUSED *f, haddr_t *addr_p/*out*/,
*-------------------------------------------------------------------------
*/
herr_t
-H5F_debug(H5F_t *f, haddr_t UNUSED addr, FILE * stream, int indent,
+H5F_debug(H5F_t *f, hid_t dxpl_id, haddr_t UNUSED addr, FILE * stream, int indent,
int fwidth)
{
hsize_t userblock_size;
@@ -4021,7 +4032,7 @@ H5F_debug(H5F_t *f, haddr_t UNUSED addr, FILE * stream, int indent,
"Root group symbol table entry:",
f->shared->root_grp ? "" : "(none)");
if (f->shared->root_grp) {
- H5G_ent_debug(f, H5G_entof(f->shared->root_grp), stream,
+ H5G_ent_debug(f, dxpl_id, H5G_entof(f->shared->root_grp), stream,
indent+3, MAX(0, fwidth-3), HADDR_UNDEF);
}