summaryrefslogtreecommitdiffstats
path: root/src/H5AC.c
diff options
context:
space:
mode:
authorBill Wendling <wendling@ncsa.uiuc.edu>2003-08-15 00:30:21 (GMT)
committerBill Wendling <wendling@ncsa.uiuc.edu>2003-08-15 00:30:21 (GMT)
commitad13ea65abf246f25841f1bb32ee232c1767b9df (patch)
tree0ced53d37b2689643234f6919cc5f101bc905081 /src/H5AC.c
parentef90db21a40b8892b79991ecb66b29b305e102de (diff)
downloadhdf5-ad13ea65abf246f25841f1bb32ee232c1767b9df.zip
hdf5-ad13ea65abf246f25841f1bb32ee232c1767b9df.tar.gz
hdf5-ad13ea65abf246f25841f1bb32ee232c1767b9df.tar.bz2
[svn-r7367] Purpose:
Update Description: Added an extra flag to the clear functions that triggers a "destroy" of the object being cleared if necessary. This is a fix for the FPHDF5 stuff which had an object sticking around after it was cleared. (In FPHDF5, some processes are in charge of destroying the object, but all processes might actually allocate the object.) Platforms tested: AIX (Copper: Fortran & C++) Linux (Verbena: Fortran & C++) IRIX (Modi4: Parallel & Fortran) (Sol is down) Misc. update:
Diffstat (limited to 'src/H5AC.c')
-rw-r--r--src/H5AC.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/H5AC.c b/src/H5AC.c
index 849bf2a..c6f1f43 100644
--- a/src/H5AC.c
+++ b/src/H5AC.c
@@ -807,7 +807,7 @@ H5AC_flush(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, unsi
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't retrieve xfer mode")
/* Sanity check transfer mode */
- assert(xfer_mode==H5FD_MPIO_COLLECTIVE);
+ assert(xfer_mode == H5FD_MPIO_COLLECTIVE || IS_H5FD_FPHDF5(f));
#endif /* NDEBUG */
/* Create the mapping */
@@ -879,8 +879,8 @@ H5AC_flush(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, unsi
/* Clear the dirty flag only, if requested */
if(clear_only) {
/* Call the callback routine to clear all dirty flags for object */
- if(((*info)->type->clear)(*info)<0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to clear cache")
+ if(((*info)->type->clear)(*info, destroy)<0)
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to clear cache");
} /* end if */
else {
flush = (*info)->type->flush;
@@ -982,8 +982,8 @@ H5AC_flush(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, unsi
/* Clear the dirty flag only, if requested */
if(clear_only) {
/* Call the callback routine to clear all dirty flags for object */
- if(((*info)->type->clear)(*info)<0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to clear cache")
+ if(((*info)->type->clear)(*info, destroy)<0)
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to clear cache");
} /* end if */
else {
flush = (*info)->type->flush;
@@ -1771,8 +1771,8 @@ H5AC_unprotect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
} /* end if */
else {
/* Mark the thing as clean (prerequite for destroy routine) */
- if((type->clear)(thing)<0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to clear object")
+ if((type->clear)(thing, FALSE)<0)
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to clear object");
/* Destroy previously cached thing */
if ((type->dest)(f, thing)<0)