[svn-r18353] Description:
Bring r18352 from trunk to 1.8 branch:
Make parallel I/O metadata cache operations obey the "evictions
enabled" flag in the cache.
Tested on:
FreeBSD/32 6.3 (duty) in debug mode
FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode
Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x,
w/C++ & FORTRAN, w/threadsafe, in debug mode
Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x,
w/C++ & FORTRAN, in production mode
Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN,
w/szip filter, in production mode
Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN,
in production mode
Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode
Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
This commit is contained in:
73
src/H5AC.c
73
src/H5AC.c
@@ -1193,19 +1193,21 @@ H5AC_set(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, void *
|
||||
#endif /* H5AC__TRACE_FILE_ENABLED */
|
||||
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
if ( ( aux_ptr != NULL ) &&
|
||||
( aux_ptr->dirty_bytes >= aux_ptr->dirty_bytes_threshold ) ) {
|
||||
/* Check if we should try to flush */
|
||||
if(aux_ptr && (aux_ptr->dirty_bytes >= aux_ptr->dirty_bytes_threshold)) {
|
||||
hbool_t evictions_enabled;
|
||||
|
||||
result = H5AC_propagate_flushed_and_still_clean_entries_list(f,
|
||||
H5AC_noblock_dxpl_id,
|
||||
f->shared->cache,
|
||||
TRUE);
|
||||
if ( result < 0 ) {
|
||||
/* Query if evictions are allowed */
|
||||
if(H5C_get_evictions_enabled((const H5C_t *)f->shared->cache, &evictions_enabled) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGET, FAIL, "H5C_get_evictions_enabled() failed.")
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTUNPROTECT, FAIL, \
|
||||
"Can't propagate clean entries list.")
|
||||
}
|
||||
}
|
||||
/* Flush if evictions are allowed */
|
||||
if(evictions_enabled) {
|
||||
if(H5AC_propagate_flushed_and_still_clean_entries_list(f,
|
||||
H5AC_noblock_dxpl_id, f->shared->cache, TRUE) < 0 )
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't propagate clean entries list.")
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
done:
|
||||
@@ -1475,19 +1477,21 @@ H5AC_rename(H5F_t *f, const H5AC_class_t *type, haddr_t old_addr, haddr_t new_ad
|
||||
}
|
||||
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
if ( ( aux_ptr != NULL ) &&
|
||||
( aux_ptr->dirty_bytes >= aux_ptr->dirty_bytes_threshold ) ) {
|
||||
/* Check if we should try to flush */
|
||||
if(aux_ptr && (aux_ptr->dirty_bytes >= aux_ptr->dirty_bytes_threshold)) {
|
||||
hbool_t evictions_enabled;
|
||||
|
||||
result = H5AC_propagate_flushed_and_still_clean_entries_list(f,
|
||||
H5AC_noblock_dxpl_id,
|
||||
f->shared->cache,
|
||||
TRUE);
|
||||
if ( result < 0 ) {
|
||||
/* Query if evictions are allowed */
|
||||
if(H5C_get_evictions_enabled((const H5C_t *)f->shared->cache, &evictions_enabled) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGET, FAIL, "H5C_get_evictions_enabled() failed.")
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTUNPROTECT, FAIL, \
|
||||
"Can't propagate clean entries list.")
|
||||
}
|
||||
}
|
||||
/* Flush if evictions are allowed */
|
||||
if(evictions_enabled) {
|
||||
if(H5AC_propagate_flushed_and_still_clean_entries_list(f,
|
||||
H5AC_noblock_dxpl_id, f->shared->cache, TRUE) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't propagate clean entries list.")
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
done:
|
||||
@@ -2068,20 +2072,21 @@ H5AC_unprotect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
|
||||
}
|
||||
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
if ( ( aux_ptr != NULL ) &&
|
||||
( aux_ptr->dirty_bytes >= aux_ptr->dirty_bytes_threshold ) ) {
|
||||
/* Check if we should try to flush */
|
||||
if(aux_ptr && (aux_ptr->dirty_bytes >= aux_ptr->dirty_bytes_threshold)) {
|
||||
hbool_t evictions_enabled;
|
||||
|
||||
result = H5AC_propagate_flushed_and_still_clean_entries_list(f,
|
||||
H5AC_noblock_dxpl_id,
|
||||
f->shared->cache,
|
||||
TRUE);
|
||||
/* Query if evictions are allowed */
|
||||
if(H5C_get_evictions_enabled((const H5C_t *)f->shared->cache, &evictions_enabled) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGET, FAIL, "H5C_get_evictions_enabled() failed.")
|
||||
|
||||
if ( result < 0 ) {
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTUNPROTECT, FAIL, \
|
||||
"Can't propagate clean entries list.")
|
||||
}
|
||||
}
|
||||
/* Flush if evictions are allowed */
|
||||
if(evictions_enabled) {
|
||||
if(H5AC_propagate_flushed_and_still_clean_entries_list(f,
|
||||
H5AC_noblock_dxpl_id, f->shared->cache, TRUE) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't propagate clean entries list.")
|
||||
} /* end if */
|
||||
} /* end if */
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
done:
|
||||
|
||||
Reference in New Issue
Block a user