[svn-r18046] Description:
Bring r18045 from trunk to 1.8 branch:
Slush changes back & forth between trunk, the merging branch and the
metadata journaling branch to level them out to a reasonably common set of code
to work from for the next set of more significant changes.
Tested on:
FreeBSD/32 6.3 (duty) w/debug
(h5committested on trunk)
This commit is contained in:
@@ -470,7 +470,7 @@ H5HL_remove_free(H5HL_t *heap, H5HL_free_t *fl)
|
||||
*
|
||||
* Return: Success: Offset of new item within heap.
|
||||
*
|
||||
* Failure: (size_t)(-1)
|
||||
* Failure: UFAIL
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
@@ -617,7 +617,7 @@ H5HL_insert(H5F_t *f, hid_t dxpl_id, H5HL_t *heap, size_t buf_size, const void *
|
||||
offset = heap->heap_alloc;
|
||||
if(need_more - need_size >= H5HL_SIZEOF_FREE(f)) {
|
||||
if(NULL == (fl = H5FL_MALLOC(H5HL_free_t)))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, (size_t)(-1), "memory allocation failed")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, UFAIL, "memory allocation failed")
|
||||
fl->offset = heap->heap_alloc + need_size;
|
||||
fl->size = need_more - need_size;
|
||||
HDassert(fl->offset == H5HL_ALIGN(fl->offset));
|
||||
@@ -646,7 +646,7 @@ H5HL_insert(H5F_t *f, hid_t dxpl_id, H5HL_t *heap, size_t buf_size, const void *
|
||||
#endif
|
||||
heap->heap_alloc = new_heap_alloc;
|
||||
if(NULL == (heap->chunk = H5FL_BLK_REALLOC(lheap_chunk, heap->chunk, (sizeof_hdr + heap->heap_alloc))))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, UFAIL, "memory allocation failed")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, UFAIL, "memory allocation failed")
|
||||
|
||||
/* Clear new section so junk doesn't appear in the file */
|
||||
/* (Avoid clearing section which will be overwritten with newly inserted data) */
|
||||
|
||||
@@ -204,19 +204,19 @@ H5HL_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, const void UNUSED * udata1,
|
||||
|
||||
/* Check magic number */
|
||||
if(HDmemcmp(hdr, H5HL_MAGIC, (size_t)H5_SIZEOF_MAGIC))
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "bad heap signature")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_BADVALUE, NULL, "bad heap signature")
|
||||
p += H5_SIZEOF_MAGIC;
|
||||
|
||||
/* Version */
|
||||
if(H5HL_VERSION != *p++)
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "wrong version number in global heap")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_BADVALUE, NULL, "wrong version number in global heap")
|
||||
|
||||
/* Reserved */
|
||||
p += 3;
|
||||
|
||||
/* Allocate space in memory for the heap */
|
||||
if(NULL == (heap = H5FL_CALLOC(H5HL_t)))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, NULL, "memory allocation failed")
|
||||
|
||||
/* heap data size */
|
||||
H5F_DECODE_LENGTH(f, p, heap->heap_alloc);
|
||||
@@ -224,22 +224,22 @@ H5HL_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, const void UNUSED * udata1,
|
||||
/* free list head */
|
||||
H5F_DECODE_LENGTH(f, p, free_block);
|
||||
if(free_block != H5HL_FREE_NULL && free_block >= heap->heap_alloc)
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "bad heap free list")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_BADVALUE, NULL, "bad heap free list")
|
||||
|
||||
/* data */
|
||||
H5F_addr_decode(f, &p, &(heap->addr));
|
||||
if(NULL == (heap->chunk = H5FL_BLK_CALLOC(lheap_chunk, (sizeof_hdr + heap->heap_alloc))))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, NULL, "memory allocation failed")
|
||||
if(heap->heap_alloc &&
|
||||
H5F_block_read(f, H5FD_MEM_LHEAP, heap->addr, heap->heap_alloc, dxpl_id, heap->chunk + sizeof_hdr) < 0)
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "unable to read heap data")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_READERROR, NULL, "unable to read heap data")
|
||||
|
||||
/* Build free list */
|
||||
while(H5HL_FREE_NULL != free_block) {
|
||||
if(free_block >= heap->heap_alloc)
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "bad heap free list")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, NULL, "bad heap free list")
|
||||
if(NULL == (fl = H5FL_MALLOC(H5HL_free_t)))
|
||||
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTALLOC, NULL, "memory allocation failed")
|
||||
fl->offset = free_block;
|
||||
fl->prev = tail;
|
||||
fl->next = NULL;
|
||||
@@ -253,11 +253,11 @@ H5HL_load(H5F_t *f, hid_t dxpl_id, haddr_t addr, const void UNUSED * udata1,
|
||||
|
||||
H5F_DECODE_LENGTH(f, p, free_block);
|
||||
if(free_block == 0)
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "free block size is zero?")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_BADVALUE, NULL, "free block size is zero?")
|
||||
|
||||
H5F_DECODE_LENGTH(f, p, fl->size);
|
||||
if(fl->offset + fl->size > heap->heap_alloc)
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_CANTLOAD, NULL, "bad heap free list")
|
||||
HGOTO_ERROR(H5E_HEAP, H5E_BADRANGE, NULL, "bad heap free list")
|
||||
} /* end while */
|
||||
|
||||
/* Set return value */
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
|
||||
#include "H5private.h" /* Generic Functions */
|
||||
#include "H5ACprivate.h" /* Metadata cache */
|
||||
#include "H5Eprivate.h" /* Error handling */
|
||||
#include "H5HLpkg.h" /* Local heaps */
|
||||
#include "H5Iprivate.h" /* ID Functions */
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
#include "H5HLprivate.h"
|
||||
|
||||
/* Other private headers needed by this file */
|
||||
#include "H5ACprivate.h" /* Metadata cache */
|
||||
#include "H5FLprivate.h" /* Free lists */
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user