*** buf_init.c.orig Thu Sep 26 05:31:40 2002 --- buf_init.c Wed Jun 18 14:29:08 2003 *************** *** 35,40 **** --- 35,42 ---- #include "utils/memutils.h" + #define FREELIST_QUEUE_SIZE 3 + /* * if BMTRACE is defined, we trace the last 200 buffer allocations and * deallocations in a circular buffer in shared memory. *************** *** 50,55 **** --- 52,58 ---- int Data_Descriptors; int Free_List_Descriptor; int Lookup_List_Descriptor; + int AmQueue_List_Descriptor; int Num_Descriptors; BufferDesc *BufferDescriptors; *************** *** 134,141 **** Data_Descriptors = NBuffers; Free_List_Descriptor = Data_Descriptors; ! Lookup_List_Descriptor = Data_Descriptors + 1; ! Num_Descriptors = Data_Descriptors + 1; /* * It's probably not really necessary to grab the lock --- if there's --- 137,145 ---- Data_Descriptors = NBuffers; Free_List_Descriptor = Data_Descriptors; ! AmQueue_List_Descriptor = Data_Descriptors+1; ! Lookup_List_Descriptor = Data_Descriptors +2; ! Num_Descriptors = Data_Descriptors + FREELIST_QUEUE_SIZE+1; /* * It's probably not really necessary to grab the lock --- if there's *************** *** 186,197 **** buf->freeNext = i + 1; buf->freePrev = i - 1; ! CLEAR_BUFFERTAG(&(buf->tag)); buf->buf_id = i; buf->data = MAKE_OFFSET(block); buf->flags = (BM_DELETED | BM_FREE | BM_VALID); buf->refcount = 0; buf->io_in_progress_lock = LWLockAssign(); buf->cntx_lock = LWLockAssign(); --- 190,202 ---- buf->freeNext = i + 1; buf->freePrev = i - 1; ! buf->freeState=-1; CLEAR_BUFFERTAG(&(buf->tag)); buf->buf_id = i; buf->data = MAKE_OFFSET(block); buf->flags = (BM_DELETED | BM_FREE | BM_VALID); + buf->refcount = 0; buf->io_in_progress_lock = LWLockAssign(); buf->cntx_lock = LWLockAssign(); *************** *** 258,264 **** size += hash_estimate_size(SHMEM_INDEX_SIZE, sizeof(ShmemIndexEnt)); /* size of buffer descriptors */ ! size += MAXALIGN((NBuffers + 1) * sizeof(BufferDesc)); /* size of data pages */ size += NBuffers * MAXALIGN(BLCKSZ); --- 263,269 ---- size += hash_estimate_size(SHMEM_INDEX_SIZE, sizeof(ShmemIndexEnt)); /* size of buffer descriptors */ ! size += MAXALIGN((NBuffers + FREELIST_QUEUE_SIZE) * sizeof(BufferDesc)); /* size of data pages */ size += NBuffers * MAXALIGN(BLCKSZ); *************** *** 272,274 **** --- 277,289 ---- return size; } + + + + + + + + + +