K 10
svn:author
V 7
coneill
K 8
svn:date
V 27
1997-09-19T07:55:43.000000Z
K 7
svn:log
V 3668
DBZ September 18, 1997 Release Changes

- Incore policy can now be specified by the application.  The
application can request that the hash table be read from disk when
needed(INCORE_NO), read into memory at open time (INCORE_MEM), or
mmap()'ed at open(INCORE_MMAP).

- Lookups into the table now use the lower 32 bits to determine the
location into the hash table, but the upper DBZ_INTERNAL_HASH_SIZE
bytes of the hash are stored in the table.  Since this version uses a
128 bit hash, this means that the two are independent giving us

	log2(tablesize) + (DBZ_INTERNAL_HASHSIZE * 8)

effective bits of hash.  For a table of with 5 million entries, this
is effectively 21-22 extra bits of hash.

- The .pag file used to hold the hash of the message-id and the offset
of the history entry.  This has now been split into two files.  The
.index file holds the offsets and the .hash file holds the hash of the
message-id.  This was done because the offset is not frequently needed
anymore (typically for cancel processing), and it is somewhat of a
waste to keep in memory.  The application can specify incore behavior
for the two files independently.  INND will mmap the .hash file if
INND_DBZINCORE is defined, sets the .index file to INCORE_NO.  Expire
sets the incore policy to INCORE_MEM for both the .hash and .index
files.

- Added a dbzexists() function.  This is optimized for existance check
only and only uses the .hash file.

- Expire no longer compiles it's own copy of dbz since the point was
to get a non-mmap'ing version of the library, and that can be done at
run-time now.

- The size of the hash used for the .hash file and the hash_t typedef
are defined by the DBZ_INTERNAL_HASH_SIZE and DBZ_EXTERNAL_HASH_SIZE
defines, respectively.

- New dbzgetoptions/dbzsetoptions interface for setting options.
Replaces a function per option interface that was getting out of hand.

- New md5 code from Landon Curt Noll that replaces the previous
implementation.  This version is definitely byte order independant and
is substanially faster.  As a result include/autoconfig.h will contain
the endianness and alignment requirements of the current host.  This
is automatically generated by endian.c

- Hash and index records will be packed now w/both gcc and Sun's cc.
If anyone has instructions on packing on another compiler that's
different, please let me know.

- Reworked hash functions so that they are more generic.  Adding a
third hash table into the implementation would be relatively easy if
we ever needed it.

- Added another entry to the .dir file.  The last entry in the file is
the percent full that the dbz routines will attempt to keep the
database at.  This defaults to 2/3's full.

- All functions in dbz.c that used to return 0 for success and -1 for
failure, now return a BOOL, with TRUE indication success and FALSE
indication failure.  Everything that uses the dbz routines has been
updated to reflect this.

- All functions use const parameters where appropriate now.

- Uses the INN SetNonBlocking function now instead of using fcntl
directly.

- dbminit will now fail opening the dbz database if it can't allocate
enough memory for the desired incore behavior.  If this happens expire
will fail.  This will prevent people from complaining that all of a
sudden expire takes hours to run when the incore malloc fails.

- Changed the old getno and getc configuration stuff to just use
fscanf.

- Fixed a bug in dbzhash where we were using the wrong result buffer
from the md5 computation.  Was working because of dumb luck.

- Removed the ability to incore in nnrpd.

- Man page updated to reflect new features and changes.



Obtained from:

END
